【SQL Server】存储过程的设计与概念(2)从存储过程接收信息

从存储过程结束信息的途径有4种:
    1、结果集
    2、输出参数
    3、返回值
    4、全局游标

返回结果集:
    为了从存储过程中获取结果集,需要在存储过程主体中插入返回结果集的T-SQL语句,最简单的方法就是使用SELECT语句,但也可以调用另一个存储过程。
    也可以从一个存储过程中返回多个结果集,这样的存储过程只不过是多包含几个SELECT语句,但要注意有些客户端的数据访问技术可以访问所有的结果集如ADO,ADO.NET,但是有的技术只能访问一个结果集。

输入参数与输出参数: 
    创建存储过程使可以包含一个由逗号(,)分割的参数列表,分为两种类型,分别为输入参数和输出参数。参数的默认类型为输入参数:
1 create   proc  getJobInfo
2 @job_id   int
3 as
4 select   *   from  jobs  where  job_id = @job_id
5 go
6 execute  getJobInfo  1

如下包含一个输出参数,注意output的使用,以及在调用存储过程时接收输出参数的方法:
 1 create   proc  getJobDesc
 2 @job_id   int ,
 3 @job_desc   varchar ( 2000 ) output
 4 as
 5 select   @job_desc = job_desc  from  jobs  where  job_id = @job_id
 6 go
 7
 8 declare   @desc   varchar ( 2000 )
 9 execute  getJobDesc  1 , @desc  output
10 print   @desc

参数的默认值:
   如果存储过程语句具有参数,则必须在调用存储过程时提供这些参数的值,否则SQL SERVER 会报错。但也可以为这些参数设定默认值,这样用户就不一定非要提供这些参数了!
1
2 ALTER    proc  getJobInfo
3 @job_id   int = 1
4 as
5 select   *   from  jobs  where  job_id = @job_id
6 go
7
8 execute  getJobInfo
9 execute  getJobInfo  2

按名称传参与按位置传参:
    按位置传参要求各个参数的顺序必须是一定的,而按名称传参则无此限制
 1 create   proc  getJob
 2 @min_lvl   int ,
 3 @max_lvl   int
 4 as
 5 begin
 6    select   *   from  jobs  where  min_lvl > @min_lvl   and  max_lvl < @max_lvl
 7 end
 8
 9 -- -按名称传参
10 execute  getJob  @max_lvl = 800 , @min_lvl = 10
11 -- -按位置传参
12 execute  getJob  10 , 800   -- 相当于:execute getJob @min_lvl=10,@max_lvl=800

返回值:
   每一个存储过程都可以以一个Return语句结尾,该语句的后面紧跟可以被调用者读取的integer值,或结果为整型值的表达式,如果没有显式的设置该值,怎返回默认值0。因为返回值局限于整形数据类型,他们最常用的场合就是向调用者发送状态和错误代码!
   注意以下调用返回值时的方法与OUTPUT的不同:
 1 alter   proc  getJob
 2 @job_id   int ,
 3 @desc   varchar ( 2000 ) output
 4 as
 5 begin
 6    select   @desc = job_desc  from  jobs  where  job_id = @job_id  
 7    return   @@error
 8 end
 9
10 declare   @id   int , @desc   varchar ( 2000 ), @result   int
11 -- -----把存储过程直接赋值给用于接收返回值的变量
12 execute   @result = getJob  1 , @desc  output
13 select   @result , @desc  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值