讲解Sybase存储过程的建立和使用

讲解Sybase存储过程的建立和使用,第1张

存储过程的特点

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 REPILE] 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 REPILE]

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

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

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

·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( ) /个人代码 /

RiQi alldatetime /执行日期 /

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

JinE allmoney) /技能工资金额 /

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

例 如果要查询全体员工的技能工资变动历史 则可先建立一个存储过程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

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

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

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

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

declare @GeRenId char( )

select @GeRenId= /设要查询员工的个人代码为 /

execute p_RsGz_JeNeng @c_GeRenId=@GeRenId

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

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

create procedure p_RsGz_JiNeng_Slt (@c_GeRenId char( ) @ _JinE  allmoney output) as select @ _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( ) @JinE  allmoney select @GeRenid= /设要查询员工的个人代码为 / select @JinE= execute p_RsGz_JiNeng_slt @c_GeRenId=@GeRenId @ _JinE=@ JinE output

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

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

create procedure p_RsGz_JiNeng_Rtn @c_GeRenId char( ) as declare @ErrCode  allint select @ErrCode= if exists(select from RS LS GZ JiNeng where GeRenid=@c GeRenId) begin select  from RS_LS_GZ_JiNeng whrer GeRen_id=@c_GeRenId order by RiQi return @ErrCodE end eslE begin select @ErrCode= return @ErrCodE end

调用存储过程p_RsGz_JiNeng_Rtn:

declare @GeRenId char( ) @RtnCode  allint select @GeRenId= select @RtnCode= execute @RtnCode=p_RsGz_JiNeng_Rtn @c_GeRenId=@GeRenId if @RtnCode= print No this one!

存储过程p_RsGz_JiNeng_Rtn向调用者返回一个存储在变量@ErrCode里的值 这个值被称为状态值 它向调用者反映存储过程执行的成败状态 在本例中 如果查不到指定员工技能工资的任何记录时 就认为 查无此人 返回出错状态值 否则 返回成功状态值

调用过程的批处理语句使用变量@RtnCode存储返回的状态值 一旦检出存储过程p_RsG_ JiNeng_Rtn返回了错误标志(@RtnCode= ) 就显示一条信息 No this one! [page]

小结

上述四个例子简要介绍了存储过程常用的几种形式 从中我们已经可以领略到它的编程特色以及使用上的灵活性和方便性

lishixinzhi/Article/program/Oracle/201311/17494

美国Sybase公司研制的一种关系型数据库系统,是一种典型的UNIX或WindowsNT平台上客户机/服务器环境下的大型数据库系统。 Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性。Sybase通常与SybaseSQLAnywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具,在我国大中型系统中具有广泛的应用。

Sybase公司成立于1984年11月,总部设在美国加州的Emeryville。作为全球最大的独立软件厂商之一,Sybase公司致力于帮助企业等各种机构进行应用、内容及数据的管理和发布。Sybase的产品和专业技术服务,为企业提供集成化的解决方案和全面的应用开发平台。Sybase作为享誉全球的跨国公司,在63个国家设立了分支机构,拥有4万多家客户,主要集中在金融服务业、政府部门、电信、医疗保健和媒体服务业。

Sybase 公司是全球领先的企业集成解决方案供应商,不仅拥有业界最完整的企业数据管理系统、领先的企业门户产品以及移动与无线解决方案,还致力于整合各种应用平台、数据库和应用软件。作为全球最大的独立软件厂商之一,Sybase解决方案将企业信息流转换成经济效益,便于企业在恰当的时间把准确的信息提供给合适的人群,使企业从数据资产中获取最大利益。

Sybase公司一向认为:软件的价值在于应用。在“用户第一,市场第二;服务第一,销售第二”的市场发展策略指导下,Sybase与用户共担风险,共同前进,稳步发展。如今,Sybase在中国的员工总数近200人,成为Sybase公司发展最快的海外分支机构之一。为了更好地给国内用户提供一流的技术支持和服务,Sybase已陆续在上海、成都、广州等地设立了办事处,合作伙伴更是遍布全国各地。

自进入中国以来,Sybase一直致力于同国内外应用软件提供商、国内教育、科研部门的合作,积极引入符合国情的应用软件,并大力扶植代理商和集成商,为中国的用户架起通向互联经济的桥梁。

Sybase公司一直面向电信、证券、金融、政府、交通与能源等领域稳步发展。尤其是在电信行业一直在同行业中处于领先地位。该季度中屡获殊荣的Sybase数据库产品先后博得了北京、云南、山东、河北、江苏等省市地区电信、移动及联通公司的青睐,并且在云南、河北等省7号信令网管系统项目中力拔头筹,一举中标。另外,山东电信在本地网管升级改造项目中,全省17个地市再次选用了Sybase产品作为数据库软件平台。并在成功赢得中国联通全国91个城市VOIP的接入项目的基础上,又获得了三期工程32个城市的数据库定单。在交通能源领域,中远集装箱运输有限公司在其构建的IRIS-2系统项目中与Sybase签定了280万美金的合同。

在此期间,Sybase公司还推出了最新的旗舰数据库产品Adaptive Server Enterprise125、业界著名的开发工具PowerBuider80、新型企业门户产品EP20、针对金融行业的解决方案FFS及行业数据仓库IWS等产品。由于新品均适应于当前及未来的企业电子商务应用,故在短时间内便受到了业界的关注和客户的好评,为未来业绩的赢收奠定了良好的基础。

在刚刚踏入2002年之计,Sybase公司凭借性能卓越的产品技术和睿智而富有个性的解决方案,先后在中国人民银行、南京地税、本地网计费等领域中大展鸿图,从而为2002年业绩的广为发展奠定了牢固的基础,稳坐同行业的领先地位。展望未来,Sybase公司除了致力于中国电子商务的建设和发展,还将进一步加强在中国投资。Sybase公司将同中国不同行业的合作伙伴建立合资公司、合作解决方案的提供以及同中国的大学进行教育合作和培训的项目。

数据库,虽然没有oracle、db2名气响,但是国内许多大企业都使用它,尤其金融企业。经本人在winxp sp2/win2000 server上安装测试通过。绝对企业版,注册文件在/crack目录中。第二个文件为sybase for linux 125企业版。本人没有测试。

Adaptive Server Enterprise (ASE) 是 Sybase 的旗舰式 RDBMS 产品,一直致力于以最低的系统总拥有成本 (TCO) 为企业提供一个高性能的数据和事务处理系统。最新版 ASE1251/1252 在继续保持以前版本的关键业务性能和高效计算的同时,在易用性、系统性能和支持新应用程序方面进行了增强和改进, 并进一步提高了系统安全和 Linux 的可扩展性。

Sybase Adaptive Server Enterprise 1251 完善和扩展了 ASE 产品系列,使其成为用于各种平台 (从基于 Linux 的 Intel 系统到来自 Sun 或 HP 的基于 RISC 的 64 处理器平台) 的理想数据库系统。当今的企业需要一个更易于使用、资源效率更高、更可靠,而且可以与企业级应用轻松集成的企业基础架构技术,以有效控制和降低成本。 Sybase ASE 1251 专门设计用于增强这些功能。

最新推出的 ASE1252 继续遵循 ASE1251 提出的降低应用整体 TCO 的技术策略,并进一步发展和完善了实时数据服务,动态数据归档等扩展功能,以期达到帮助用户进一步降低TCO的关键目标。

现在,如果采用 Sybase RTDS 实时数据服务包,Sybase 的 ASE 最新版可以通过JMS消息总线为高性能的实时消息服务提供集成数据库的支持。用户可以将它用于关键业务信息系统中,Sybase ASE 实时消息服务功能可以提供实时报警和通知,并且用户可以直接获得这些改变。

Sybase ASE 确保最高的 *** 作有效性和各种平台上的吞吐量,从 32/64 位 Linux/Intel 到各种大规模的 SMP 系统。

ASE 帮助您的企业:

降低运行成本 - 自我管理功能提高系统运行的可伸缩性 — 这个功能可以在人员和系统资源较少的情况下实现更高的性能。

降低开发成本 - 增强的 Web 服务和 XML 功能可以更快地、更容易地开发、提交和维护新的业务应用。

降低硬件成本 - ASE 支持大规模数据集,能够提高各种平台上的数据量,包括 32 和 64 位的 Linux/Intel 系统。

目前版本 - ASE 1253 Interim Release 具有新的功能,包括跨平台 Dump 和 Load,便于系统迁移。

一、Sybase数据库简介

1.版本

1984年,Mark B Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。SYBASE主要有三种版本,一是UNIX *** 作系统下运行的版本,二是Novell Netware环境下运行的版本,三是Windows NT环境下运行的版本。对UNIX *** 作系统目前广泛应用的为SYBASE 10 及SYABSE 11 for SCO UNIX。

2.Sybase数据库的特点

(1)它是基于客户/服务器体系结构的数据库

一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。

而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。

客户/服务器模型的好处是:

它支持共享资源且在多台设备间平衡负载

允许容纳多个主机的环境,充分利用了企业已有的各种系统

(2) 它是真正开放的数据库

由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。

(3) 它是一种高性能的数据库

Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:

可编程数据库

通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。

事件驱动的触发器

触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。

多线索化

Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠 *** 作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让 *** 作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替 *** 作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了 *** 作系统这一环节,提高了性能。

[编辑本段]Sybase中国

sybase公司于1991年12月进入中国大陆,经过一段时间的本地技术人才积蓄与市场开拓后,在1993年投资230万美元正式建立Sybase在中国的公司,注册名称为赛贝斯软件(中国)有限公司。

经过十几年的发展,sybase公司赢得了大量的市场,拥有遍及金融、电信、政府、制造、零售、交易、教育、铁路、电力、水利、环保、军事、外贸等行业超过1000家的用户。拥有雄厚技术实力与产品魅力、 一贯坚持“走有特色的中国之路”的sybase中国公司衷心地愿为广大国内用户开启未来的成功之门。sybase公司拥有经验丰富的技术专家和工程人员,为用户提供一流的技术支持与服务,包括系统选型、方案论证、业务分析、系统设计和应用开发等,从而多角度全方位地满足不同用户、不同应用系统的不同需求。

sybase公司在中国有员工近300人,其中技术人员数量占到公司总人数的85%。sybase中国公司除北京总部外,在上海、成都、广州等地设立了办事处,并在北京、上海、西安等地设立了研发中心,与合作伙伴一道为客户就近提供服务与支持。为全力提升既定市场的领导地位, sybase于2002、2003年相继在北京、上海成立“解决方案中心”,加强与客户、合作伙伴的协作关系并提供最完善的技术顾问。

自90年代初起,sybase已占稳中国市场,随着中国加入世贸及北京成功申办2008年奥运,亚太趋势必享有策略性的优势。CCID报告指出,sybase在中国电信业已取得45%的市场占有率,并以362%的份额占据中国铁路数据库市场绝对的领导地位。sybase公司凭借优异的服务质量,连续三年荣获CCID颁发“最佳用户服务满意度奖”;更荣膺2002年中国数据库软件市场年度成功企业殊荣。IDC调查报告显示,sybase公司在中国软件市场的占有率名列第四,目前已占据着国内软件市场的主导地位。

以上就是关于讲解Sybase存储过程的建立和使用全部的内容,包括:讲解Sybase存储过程的建立和使用、SYBASE索引错误怎么解决、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10161074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存