一、 创建带参数的存储过程

      创建带参数的存储过程首先要在存储过程中声明该参数,每个存储过程参数都必须用唯一的名称进行定义。与T-SQL变量相同,参数名必须以@为前缀,并且遵从标识符规则。当用户不提供该参数的值时可以使用一个默认值来代替。

    1.不带默认值的参数

     创建一个参数不带默认值的存储过程,在调用该存储过程时,必须对存储过程中的所有参数进行赋值,如果有一个参数没有赋值,则无法调用该存储过程。例如:

     

[sql] 

  1. <span style="font-size:18px;">use db_student  

  2. --创建存储过程  

  3. create procedure proc_group  

  4. @课程类别 varchar(20),  --定义参数  

  5. @学分 int   

  6. as   

  7. select * from course  

  8. where 课程类别=@课程类别 and 学分>@学分</span>  

执行不带参数的存储过程就是:

[sql]

  1. use db_student  

  2. exec proc_group '歌曲',8  

如果不按顺序赋值可以写成:

[sql]


  1. use db_student  

  2. exec proc_group @学分=8,@课程类别=‘篮球课’  

2.带默认值的参数


  在SQL中我们可以对字段进行默认值的约束,在存储过程中也可以建立使用默认值的参数。只要在参数的定义之后加上等号,并在等号后面写出默认值即可。

[sql] 

  1. --创建存储过程  

  2. use db_student  

  3. create procedure proc_group  

  4. @课程类别 varchar(20)='体育课',  

  5. @学分 int=6  

  6. as   

  7. select * from course where 课程类别=@课程类别 and 学分>@学分  

执行参数带默认值的存储过程


[sql] 

  1. use db_student  

  2. exec proc_group @学分=8  


3.带返回参数的存储过程

创建存储过程时,可以用output参数来创建一个带返回值的存储过程,例如:

 

[sql] 

  1. @a int output  

如果创建带返回参数的存储过程proc_group,那么SQL语句如下:


[sql] 

  1. --创建带返回值的存储过程  

  2. create procedure proc_group  

  3. @课程类别 carchar(20),  

  4. @平均学分 int output         --设置带返回值的参数  

  5. as