Sybase存储过程的建立和使用

豆豆网   技术应用频道   2007年07月31日    社区交流

内容摘要:存储过程一般多由Client端通过存储过程的名字进行调用,即跨网传送的只是存储过程的名字及少量的参数(如果有的话),而不是构成存储过程的许多SQL语句,因此可以减少网络传输量,加快系统响应速度。

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

  例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语句的变量单中。 

  例3.如果要计算当月工资,就必须从工资历史中查出员工距离当前最近的一次技能工资变动的结果: 

责编:豆豆技术应用

正在加载评论...