自定义存储过程

存储过程按返回值类型分:分为以下两种

 

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变量的值建立一个表格,并以表格的形式返回

posted @ 2010-05-17 13:58  彪悍的人生  阅读(739)  评论(0)    收藏  举报