- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Sybase移植的具体实现.doc
Sybase移植的具体实现
目 录
1 导言
1.1 目的
1.2 范围
1.3 参考资料
1.4 版本更新记录
2 概述
3 前端应用的移植
3.1 PowerBuilder应用程序移植
3.2 嵌入SQL移植
3.3 API调用移植
4 服务器端的移植
4.1 初始数据库安装
4.2 创建数据库对象
4.3 T-SQL语句
4.4 编程结构
4.5 事务处理
4.6 存储过程
4.7 触发器
4.8 光标
导言
1目的
本文档是在《Oracle移植到Sybase》一文对Oracle和Sybase的不同点的说明基础上,结合“本地网计费”软件的具体实现而编写的。目的根据现有系统在Oracle上的具体实现,形成一个移植到Sybase环境的详细设计和规范,既作为程序开发人员具体编码实现的参考,又作为程序移植的指导性文档。
本文档在讨论移植过程的基础上,力求重点突出程序移植的具体实现,并针对在移植过程中经常用到的结构,形成一个标准的框架,以减少程序移植的工作量,规范移植过程。
1.2范围
3参考资料
1 . 中鲁公司:《中鲁本地电信业务计费帐务系统数据库设计说明书》
2 . 中鲁公司:《Oracle移植到Sybase》的说明
4版本更新记录
版本/修订版 日期 修改记录 备注 1.0 2000.03.10 初始版本
概述
“本地网计费”软件的移植过程主要包括前端应用程序的移植和服务器端的移植两部分工作。该软件客户端使用的开发工具有:Powerbuilder、Delphi、C等。无论是用Powerbilder、Delphi编写的应用还是C语言中的嵌入SQL,移植的主要问题仍然是Oracle和Sybase的SQL语句的转换问题。具体来说,包括:
Powerbuilder、Delphi编写的前端应用的转换。
Oracle的Pro *c嵌入SQL到Sybase的ESQL/C的转换。
服务器端的移植主要从:初始数据库安装、创建数据库对象、T-SQL语句、基本编程结构、存储过程和触发器编写等几个方面来说明。对于经常用到的结构,提供出标准的框架。
前端应用的移植
3.1.Powerbuilder应用程序的移植
Powerbuilder编写的应用的在移植时,需要考虑静态数据窗口和嵌入SQL的转换问题。从本质上讲,静态数据窗口嵌入了一个SQL语句。
对于静态数据窗口,可以考虑将语法导出,根据Sybase环境下的规定,改写SQL语句,然后连接Sybase的数据库,将数据窗口导入,重新编译。数据窗口语法转换的工作,可以根据Powerbuilder中数据窗口的语法存储,写一个转换程序,在Powerbuilder源程序库中定位到数据窗口,修改其语法,再写入文件,这可以代替相当一部分手工工作。
嵌入SQL的转换,将Oracle上的书写形式,按Sybase下的要求改写。
对于Powerbuilder应用程序的移植,需要注意的是:
本软件移植到Sybase后,所有的数据库对象,包括:表、列、视图、索引均采用大写,在改写时需要替换。
注意数据窗口对应列从Oracle移植到Sybase后的数据类型的转换。数据类型的转换根据创建表时的定义。
外部数据源的数据窗口注意每个列的数据类型是否和Sybase相匹配。
改写SQL语句要注意Oracle到Sybase的系统函数的转换,系统函数的转换参见《Oracle移植到Sybase》中的有关说明。常见的例如:Oracle中两个字符串的连接操作使用“||”或concat函数,在Sybase上使用“+”。
如果SQL语句中使用了外连接,注意Oracle和Sybase外连接的表达形式的不同。Sybase不支持Oracle联合操作中的交集(INTERSECT)和差集(MINUS)语句,可以改写为由Exists引出的相关子查询。SQL语句的转换的实例参见在4.3查询SQL语句中说明的框架。
在Sybase上能使用连接的地方尽可能把子查询改写为等价的连接,以提高查询的执行效率。
在Powerbuilder下事务的控制是使用变量:sqlca.AutoCommit来实现的:
sqlca.AutoCommit=False --//开始一个事务
。。。 --//中间的事务处理过程
if sqlca.sqlcode0 then --//事务中语句执行失败,回滚
rollback;
。。。 --//其它错误处理
end if
commit; --//
文档评论(0)