sql基础之四 存储过程

  网上有个比较通俗易懂的理解:存储过程就是预先定义好的SQL语句,然后存储起来,等你用的时候再把自己所需要的匹配的SQL语句用Execute(即exec)调用就行!

使用存储过程的优势:

1.性能高:一条SQL语句可以被多个地方使用,这样进行复杂的操作时(比如多张表连表查询)可将那些复杂的操作用存储过程先封装起来然后进行查询!

2.高速并减少网络流量:只在创造时进行编译,以后每次执行都不需要重新编译,这与一般的SQL语句(一般的SQL语句每执行一次就编译一次)相比就速度加快了很多!

3.安全:可以指定只有某用户才可以进行访问!

创建存储过程:CREATE PROCEDURE 存储过程名形参表AS 存储过程体
执行存储过程:EXECUTE 存储过程名 实参表
删除存储过程:DROP PROCEDURE 存储过程名

create table student1(/*创建表student1*/
 Sid int identity(1,1),/*自增1*/
 Sno varchar(50) primary key,/*主键*/
 Sname varchar(50),
 Sage int,
 Ssex varchar(5)
 )
运行结果如下: 


/*无参数存储过程之查询所有数据*/
   create proc stu1
   as  
   begin /*与end成对出现,也可以成对省略不写*/
	  select * from student1
   end
   go
      exec stu1/*执行语句查询*/



 /*有参数的存数过程*/
 create proc stu2
 @Sname varchar(150) /*声明全局变量*/
 as 
 select *from student1 where student1.Sname=@Sname
 go 
 exec stu2 '王刚' /*调用stu2 这个存储过程并执行*/
 go



/*有参数的存数过程之内部设定用户名查询用户信息*/
 create proc stu3
 @Sname varchar(50)='李泽'/*声明全局变量并赋值即内部设置默认值*/
 as
 select * from student1 where Sname=@Sname
-- select * from student1 where student1.Sname=@Sname
 go
 exec stu3

drop proc stu3/*删除存储过程stu3*/

/*局部变量*/
 create proc stu4
 as 
 declare @Sname varchar(50)/*声明局部变量*/
 set @Sname ='张明'
	select * from student1 where Sname=@Sname
go

	exec stu4

/*存储过程根据条件用户学号查询用户年龄  */
create proc stu5
@Sno varchar(50)
as 
declare @Sage varchar(50)
set @Sage=(select Sage from student1  where Sno=@Sno)
--set @Sage=(select Sage from student1 s where s.Sno=@Sno)
select @Sage
go
exec stu5 '06'


/*新增用户信息*/
 create proc stu6  
@Sno varchar(50),  
@Sname varchar(50),  
@Sage int,  
@Ssex varchar(5)  
as   
begin  
    insert into student1   
        (Sno,Sname,Sage,Ssex)  
    values   
        (@Sno,@Sname,@Sage,@Ssex)   
end  
go  
  
exec stu6 '07','陈浩','26','男'  
go



 /*存储过程根条件(此例是学号)查询用户存在性*/
create proc stu7 
@sno varchar(50),  
@result varchar(8) output --输出参数  
as  
begin  
     if (select COUNT(1) from student1 where Sno=@sno)>0  
     -- if exists (select Sno from student1 s where s.Sno=@Sno)
     set   
        @result='存在!'  
     else  
     set   
        @result='不存在!'  
end  
go  
  
  
declare @result varchar(8)  
exec stu7'09',@result output  
print @result  
Go


结果:不存在




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值