自定义存储过程
存储过程按返回值类型分:分为以下两种
1.参数返回值类型:
a,该存储过程至少有一个返回值类型参数
b,调用时要使用一个变量存储该返回值
c,要是该返回值,就要对该变量执行相应的操作
|
定义 |
CREATE PROCEDURE 过程名 |
|
|
@a Type ,@b Type = 缺省值, @c Type OUTPUT , @d Type= 缺省值 OUTPUT |
||
|
As SQL语句,算法 |
||
|
执行 |
Declare @out1 int Declare @out2 int Execute 过程名 参数1,参数2,@out1 OUTPUT , @out2 OUTPUT |
|
|
格式 说明 |
1.声明参数据时要指明数据类型 2.可以为参数指定缺省值,有缺省值的参数在调用时可以不添 3.定义为返回值型的参数,无论是在定义时,还时在调用时都要加上OUTPUT关建字. 4.调用时,传递参数要按指定的顺序,如果想随意传递,要指明对应的参数, 如(@b=1,@c=@out1 OUTPUT,@a=2, @d=@out2 OUTPUT )当想省略一些缺省值时,要使用这种方式 5.如果参数(包括返回类型参数)没的有指定默认值,在调用时就要为其指定值. |
|
|
例 |
例1、定义一个计算矩形面积的过程 |
计算长为25 宽为13的矩形面积 |
|
CREATE PROCEDURE area @width int , @hight int , @areaValue int OUTPUT as set @areaValue=@width* @hight |
declare @s int Execute area 25,13,@ok = @s OUTPUT Select @s 将在查询分析器中以表格方式输出结果.只有一个单元格的表格 |
|
2.select语句返回表格类型
a,该存储过程至少有一个select查询语句,在条件表达式中的子查询除外
b,直接调用即可,将得到一张表,如在[查询分析器]中直接调用有Select语句的存贮过程时,将得到一张表.
c,可以与参数(包括返回值参数)一起使用,返回值互不影响
|
定义 |
CREATE PROCEDURE 过程名 |
|
|
@a Type |
||
|
As Select * From table |
||
|
执行 |
Execute 过程名 |
|
|
|
||
|
例 |
例2、定义一个读取表的过程 |
读取表中姓为刘的,并打开记录集 |
|
CREATE PROCEDURE find @name varchar(10) as select * from a1 where a like @name |
Execute find ‘刘%’ 将在查询分析器中以表格方式输出结果.
|
|
3.存储过程在数据库开发过程中的使用说明
a,同一个存储过程可以即有输出参数,也有select语句。他们的输出方式不同,互不影响。
b,一个存储过程也可以没有任何输出,如执行备份的存储过程
c,[参数返回值类型]的存储过程,一般用于内存存储过程嵌套调用使用,外部程序可以调用执行,但无法得到其返回值
d,[select语句返回值类型]的存储过程,一般用于给外部数据查询程序调用(如ADO),并将查询结果表格返回给外部应用程序
e,外部程序要实现[参数返回值类型]的存储过程效果的实现
|
仍以[定义一个计算矩形面积的过程]为例: |
|
|
SQL中 |
CREATE PROCEDURE area @width int , @hight int , @areaValue int OUTPUT as set @areaValue=@width*@hight |
|
Select @areaValue//添加该句,即以@areaValue变量的值建立一个表格,并以表格的形式返回 |
|

浙公网安备 33010602011771号