sql基础之存储过程

来源:互联网 发布:淘宝店铺营销 编辑:程序博客网 时间:2024/05/20 02:25

  网上有个比较通俗易懂的理解:存储过程就是预先定义好的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=@Snamegoexec 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 @Sagegoexec 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

结果:不存在




原创粉丝点击