Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103121395
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Sybase

2008-04-11 12:57:06

   来源:赛迪网    作者:yashi

·SQL_statements:定义存储过程功能的SQL语句。

·@return_status:接受存储过程返回状态值的变量。

·[@parameter_name=]value:实际参数(实参),@parameter_name为实参的名称(可选)。如果某个实参以@parameter_name=value提供,那么随后的实参也都要采用这一形式提供。

·[@parameter_name=]@varialbe[OUTput]:将变量@varialbe中的值作为实参传递给形参@parameter_name(可选),如果变量@varialbe是用来接受返回的参数值,则选项OUTput不可缺少。   

存储过程的建立和使用,我们将通过几个例子进行介绍。

假设有一个用下述语句生成的技能工资表RS-LS-GZ-JiNeng:

create table RS_LS_GZ_JiNeng     /*技能工资表*/ 

(GeRen_id char(4),         /*个人代码 */ 

RiQi smalldatetime,         /*执行日期 */ 

YuanYin_id char(1) null,       /*变动原因代码 */ 

JinE smallmoney)           /*技能工资金额 */

该表存储着某单位员工多年来技能工资的历史档案。

例1.如果要查询全体员工的技能工资变动历史,则可先建立一个存储过程p-RsGz-JiNeg-All:

create procedure p_RsGz_JiNeng_All as 
select * 
from RS_LS_GZ_JiNeng 
order by GeRenid,RiQi

然后用批处理语句调用存储过程p_RsGz_JiNeng_All进行查询:

execute p_RsGz_JiNeng_All

本例只显示查询到的数据,无输入、输出参量,是最简单的一个存储过程。 [page]

例2.如果要查询某人技能工资的变动历史,可建立另一个存储过程p_RsGz_JiNeng:

create procedure p_RsGz_JiNeng @c_GeRenId char(4) 
as
select *from RS_LS_GZ_JiNeng 
where GeRen_id=@c_GeRenId 
order by RiQi

之后用批处理语句调用存储过程p_Rs_Gz_JiNeng进行查询:

declare @GeRenId char(4) 
select @GeRenId="0135" /*设要查询员工的个人代码为"0135" */ 
execute p_RsGz_JeNeng @c_GeRenId=@GeRenId

存储过程p_RsGz_JiNeng中定义了一个形参@c_GeRenId,是字符型变量。在调用该过程的批处理中,既可以用具体的值也可以用变量作为实参。用变量作实参(如本例)时,必须用del are语句加以说明。值得注意的是,在批处理的调用过程语句中,@c_GeRenId=@GeRenId中的@ c_GeRenId是存储过程p_RsGz_JiNeng中的形参名,不是批处理中的变量,所以不能将它列入d eclare语句的变量单中。

阅读(513) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~