设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> 数据库开发 >> Sybase存储过程的建立和使用
精品推荐
数据库开发点击TOP10
·MYSQL 新版出现 Client does not support authentication protocol requested by server; consider upgrading MySQL client解决办法
·生成助记码(取汉字的第一个字母)
·ORA-01034错误的解决办法
·ORACLE数据库管理员的职责
·将DW数据窗口导出为EXCEL文件的方法(整理)
·Oracle中分区表的使用
·SQL Server 2000+ MS WIN2003群集服务配置
·SQL中UNION 与 UNION ALL 的区别
·ORA-00257: archiver error. Connect internal only, until freed.
·Oracle备份与恢复案例
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

Sybase存储过程的建立和使用

作者: 来源:网络文章 时间:2005-12-17 22:35:00

Sybase存储过程的建立和使用(2)
假设有一个用下述语句生成的技能工资表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

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

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

create procedure p_RsGz_JiNeng_Slt

(@c_GeRenId char(4),@sm_JinE smallmoney output)

as

select @sm_JinE=JinE

from RS_LS_GZ_JiNeng

where RiQi=(select max(RiQi)

from RS_LS_GZ_JiNeng

where GeRenid=@c-GeRenId)/*找出历史记录中距离当前最近的日期*/

调用存储过程p_RsGz_JiNeng_Slt进行查询:

declare @GeRenId char(4),@JinE smallmoney

select @GeRenid="0135"/*设要查询员工的个人代码为"0135"*/

select @JinE=0

execute p_RsGz_JiNeng_slt @c_GeRenId=@GeRenId,@sm_JinE=@ JinE output

这里,变量 @JinE用来存储过程形参@sm_JinE传回的金额。在调用过程语句中,@sm_JiE = @JinE output中的output不可省略。否则,变量@JinE将得不到形参传回的数值而始终为零(等于初值)。

例4.查到了个人代码为"0135"员工的技能工资就显示其历史纪录,查不到则显示一条出错信息。

共3页 9 7 [1] [2] [38 :>

Sybase存储过程的建立和使用 相关文章:
Sybase存储过程的建立和使用 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com