欢迎来到天天文库
浏览记录
ID:40568037
大小:112.00 KB
页数:18页
时间:2019-08-04
《Sybase移植的具体实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Sybase移植的具体实现目录1导言1.1目的1.2范围1.3参考资料1.4版本更新记录2概述3前端应用的移植3.1PowerBuilder应用程序移植3.2嵌入SQL移植3.3API调用移植4服务器端的移植4.1初始数据库安装4.2创建数据库对象4.3T-SQL语句4.4编程结构4.5事务处理4.6存储过程4.7触发器4.8光标1.导言1.1目的本文档是在《Oracle移植到Sybase》一文对Oracle和Sybase的不同点的说明基础上,结合“本地网计费”软件的具体实现而编写的。目的根据现有系统在Oracle上的具体实现,形成一个移植到Sybase环境的详细设计
2、和规范,既作为程序开发人员具体编码实现的参考,又作为程序移植的指导性文档。本文档在讨论移植过程的基础上,力求重点突出程序移植的具体实现,并针对在移植过程中经常用到的结构,形成一个标准的框架,以减少程序移植的工作量,规范移植过程。1.2范围1.3参考资料1.中鲁公司:《中鲁本地电信业务计费帐务系统数据库设计说明书》2.中鲁公司:《Oracle移植到Sybase》的说明1.4版本更新记录版本/修订版日期修改记录备注1.02000.03.10初始版本2.概述“本地网计费”软件的移植过程主要包括前端应用程序的移植和服务器端的移植两部分工作。该软件客户端使用的开发工具有:Pow
3、erbuilder、Delphi、C等。无论是用Powerbilder、Delphi编写的应用还是C语言中的嵌入SQL,移植的主要问题仍然是Oracle和Sybase的SQL语句的转换问题。具体来说,包括:1)Powerbuilder、Delphi编写的前端应用的转换。2)Oracle的Pro*c嵌入SQL到Sybase的ESQL/C的转换。服务器端的移植主要从:初始数据库安装、创建数据库对象、T-SQL语句、基本编程结构、存储过程和触发器编写等几个方面来说明。对于经常用到的结构,提供出标准的框架。3.前端应用的移植3.1.Powerbuilder应用程序的移植Pow
4、erbuilder编写的应用的在移植时,需要考虑静态数据窗口和嵌入SQL的转换问题。从本质上讲,静态数据窗口嵌入了一个SQL语句。对于静态数据窗口,可以考虑将语法导出,根据Sybase环境下的规定,改写SQL语句,然后连接Sybase的数据库,将数据窗口导入,重新编译。数据窗口语法转换的工作,可以根据Powerbuilder中数据窗口的语法存储,写一个转换程序,在Powerbuilder源程序库中定位到数据窗口,修改其语法,再写入文件,这可以代替相当一部分手工工作。嵌入SQL的转换,将Oracle上的书写形式,按Sybase下的要求改写。对于Powerbuilder应
5、用程序的移植,需要注意的是:1)本软件移植到Sybase后,所有的数据库对象,包括:表、列、视图、索引均采用大写,在改写时需要替换。2)注意数据窗口对应列从Oracle移植到Sybase后的数据类型的转换。数据类型的转换根据创建表时的定义。3)外部数据源的数据窗口注意每个列的数据类型是否和Sybase相匹配。4)改写SQL语句要注意Oracle到Sybase的系统函数的转换,系统函数的转换参见《Oracle移植到Sybase》中的有关说明。常见的例如:Oracle中两个字符串的连接操作使用“
6、
7、”或concat函数,在Sybase上使用“+”。5)如果SQL语句中使用
8、了外连接,注意Oracle和Sybase外连接的表达形式的不同。Sybase不支持Oracle联合操作中的交集(INTERSECT)和差集(MINUS)语句,可以改写为由Exists引出的相关子查询。SQL语句的转换的实例参见在4.3查询SQL语句中说明的框架。6)在Sybase上能使用连接的地方尽可能把子查询改写为等价的连接,以提高查询的执行效率。7)在Powerbuilder下事务的控制是使用变量:sqlca.AutoCommit来实现的:sqlca.AutoCommit=False--//开始一个事务。。。--//中间的事务处理过程ifsqlca.sqlcode
9、<0then--//事务中语句执行失败,回滚rollback;。。。--//其它错误处理endifcommit;--//整个事务执行成功提交或者:stringvsSqlvsSql=’begintrant1’--//开始一个事务ExecuteImmediate:vsSql;。。。--//中间的事务处理过程ifsqlca.sqlcode<0then--//事务中语句执行失败,回滚vsSql=’rollbacktrant1’ExecuteImmediate:vsSql;。。。--//其它错误处理endifvsSql=’committrant1’--//整个
此文档下载收益归作者所有