祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 3005|回复: 0

[转帖]Sybase 数据库存储过程的建立和使用

[复制链接]

[转帖]Sybase 数据库存储过程的建立和使用

[复制链接]
ehxz

主题

0

回帖

58万

积分

管理员

积分
588551
贡献
在线时间
小时
2007-6-22 15:27:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
Sybase的存储过程是集中存储在SQL Server中的预先定义且已经编译好的事务。存储过程由 SQL语句和流程控制语句组成。它的功能包括:接受参数;调用另一过程;返回一个状态值给调用过程或批处理,指示调用成功或失败;返回若干个参数值给调用过程或批处理,为调用者提供动态结果;在远程SQL Server中运行等。

  存储过程的性能特点如下:

   

  ·存储过程是预编译过的,这就意味着它与普通的SQL语句或批处理的SQL语句不同,当首次运行一个存储过程时,SQL Server的查询处理器对其进行分析,在排除了语法错误之后形成存储在系统中的可执行方案。由于查询处理的大部分工作已经完成,所以存储过程执行速度很快。

  ·存储过程和待处理的数据都放在同一台运行SQL Server的计算机上,使用存储过程查询当地的数据,效率自然很高。

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

  ·存储过程还有着如同C语言子函数那样的被调用和返回值的方便特性。

  所以,存储过程大大增强了SQL语言的功能、效率和灵活性。掌握和应用好存储过程,对进一步发挥Sybase数据库系统的强大功能有着重要的意义。

  存储过程的语法规则

  建立存储过程的语法规则为:

        CREATE PROCedure[owner.]procedurename[;number]

          [[(]@parameter_name datatype[=default][OUTput]

          [,@parameter_name datatype[=default][OUTput]]...[)]]

          [WITH RECOMPILE]

          AS SQL_statements

  使用存储过程的语法规则为:

        [EXECute][@return-status=]

          [[[server.]database.]owner.]procedurename[;number]

          [[@parameter_name=]value|[@parameter_name=]@varialbe[OUTput]

          [,[@parameter_name=]value|[@parameter_name=]@variable[OUTput]...]]

          [WITH RECOMPILE]

  下面简要介绍这两个命令的常用选项以及建立和使用存储过程的要点,关于选项的更为详细的说明请参考有关手册。

  ·[[[server.]database.]owner.]procedure_name:存储过程的名字。

  ·@parameter_name datatype[=default][OUTput]:形式参数(形参)的名称、类型。df ault是赋予的缺省值(可选),OUTput指定本参数为输出参数(可选)。形参是存储过程中的自变量,可以有多个,名字必须以@打头,最长30个字符。

        ·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

  本例只显示查询到的数据,无输入、输出参量,是最简单的一个存储过程。
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-11-22 15:07 , Processed in 0.029713 second(s), 8 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表