您好,欢迎访问一九零五行业门户网

sqlserver存储过程学习笔记(一)基础知识篇(全)

说出来有点丢人,做sqlserver应用系统近一年,竟然没有使用过存储过程,现在就好好的梳理一下对应知识,慢慢让其加入到我的项目中去吧。 存储过程的优点:1、运行效率高,提供了在服务器端快速执行sql语句的有效途径。2、存储过程降低了客户机和服务器之间的
  说出来有点丢人,做sqlserver应用系统近一年,竟然没有使用过存储过程,现在就好好的梳理一下对应知识,慢慢让其加入到我的项目中去吧。
  存储过程的优点:1、运行效率高,提供了在服务器端快速执行sql语句的有效途径。2、存储过程降低了客户机和服务器之间的通信量。3、方便实施企业规则。
  (1)创建存储过程
  ①创建一个存储过程,查看00005号课程的选修情况,包括选修该课程学生的学号、姓名和成绩。
   解答:
              use sm(数据库名称)
              go
              create procedure ssc_3
              as
                   select student.sno,sname,score
                   from student left join sc on student.sno=sc.sno
                   where sc.sno='00005'
                   go
按f5键,创建成功
②执行存储过程:execute ssc_3
(2)使用输入参数
 ①上面建立的存储过程只能对00005号课程的选修情况进行查看,要想对所有课程进行随机查看,需要进行参数的传递
use sm
go
create procedure ssc_4
@cnumber char(5)
as
 select student.sno,sname,score
 from student left join sc on student.sno=sc.sno
 where sc.sno=@cnumber
go
②按位置传递参数
execute ssc_4 '00008'
③通过参数名传递参数
execute ssc_4 
@cnumber='00008'
 (3)使用默认参数值
①执行存储过程ssc_4时,如果没有给出参数,系统会报错。如果希望不给参数时,能查询所有课程的选修情况,则可以使用默认参数来实现
 use sm 
go
create procedure ssc_5
@cnumber char(5) =null
as 
if  @cnumber is null
begin
select student.sno,sname,score
from stuent join sc on student.sno=sc.sno
end
else
begin
select student.sno,sname,score from student join sc on student.sno=sc.sno
where sc.sno=@cnumber
end
go
②执行下面两条语句,比较执行结果。
execute ssc_5
execute ssc_5 '00005'
(4)使用输出参数
①创建一个存储过程ssc_6,获得选修某门课程的总人数
use sm 
go
create procedure ssc_6
@cnumber char(5),@ccount int output
as 
select @ccount=count(*) from sc where sc.cno=@cnumber
go
@执行存储过程ssc_6
declare @ccount int
execute ssc_6 '00008',@ccount output
select 'the result is',@ccount
(5)使用返回值
①创建一个返回执行状态码的存储过程ssc_7,它接受课程号为输入参数,如果执行成功,返回0;如果没有给出课程号,返回错误码1;如果给出的课程号不存在,返回错误码2;如果出现其他错误,返回错误码3.
use sm
go
create procedure ssc_7
@cnumber char(5) = null
as
if @cnumber is null
begin
    print 'error:you must specify a course number.'
    return(1)
    end
else
begin
    if(select count(*) from sc where cno=@cumber)=0
    begin
    print 'error:you must specify a valid course number'
    return(2)
     end
end
select @cnumber as cno from sc where cno=@cnumber 
if @@error0
begin 
return(3)
end
else
return(0)
go
执行存储过程ssc_7
declare @result int
exec @result ==ssc_7
select 'the result is',@result
(6)修改存储过程(sqlserver 2008下)
在数据库根目录下,打开可编程选项下得存储过程选项,选择要修改的存储过程,右击鼠标,在弹出的对话框中选择修改即可
(7)查看存储过程。
  执行以下语句,查看存储过程ssc_3 的信息。
exec sp_help ssc_3
(8)删除存储过程
执行以下语句,删除存储过程ssc_3
drop procedure ssc_3
其它类似信息

推荐信息