当前页面位置: » 丰搜网 » 文档中心 » 详细内容
在adaptiveserveranywhere和oracle之间构造通用函数
在adaptive server anywhere和oracle之间构造通用函数 辽河油田锦采地质大队 邓先永 |
01-7-2 上午 10:29:41
|
| 在使用powerbuilder编制程序时,使用的最多的数据库接口是它自身集成的adaptive server anywhere和大型数据库管理系统oracle;有时,为了使程序的运行、移植更加方便,比如从服务器的数据管理端立即转到单机的数据管理端时,往往涉及到用户在程序的sql语句中所使用的不同数据库平台上,函数的兼容性问题。 |
| 比如在最后的数据汇总时,为了保证计算结果的正确性,就要使用防止空值发生的函数,这个函数在oracle中是nvl(x,y);用法为: |
| select name,nvl(age,”年龄未知”) age,nvl(zipcode,”无邮政编码”) zipcode from unknow_personal; |
| 而在adaptive server anywhere的单机数据库平台上,就要用isnull等函数了,语法为: |
| select name,isnull(age,”年龄未知”) age,isnull(zipcode,”无邮政编码”) zipcode from unknow_personal; |
| 现在问题是当我们所用的数据库要从oracle移植到单机版的adaptive server anywhere上时,由于某些函数的不通用性,程序就要修改相应的函数调用,重新编译,如果在程序中大量或多处使用这种函数时,就很有可能导致人为的错误,从而使程序的维护工作量加大,我曾在网上发过有相关帮助的帖子,但不太切中要害。经过仔细研究一段时间后,终于在adaptive server anywhere单机平台上实现了oracle上的函数nvl(),使我的程序应用更加方便,现写下来与大家共享。 |
| 另外,本人以前用pb6的时候,在pb6的database administrater painter中曾编写过比较复杂的stored procedure,但是由于pb6中在处理和database直接接口的script时,对于” ; ”和” ’ ”的使用上较多的不方便之处,因而实现时花费了不少的气力,虽然在pb7中此毛病仍然存在,但在pb7的光盘中集成的adaptive server anywhere 6.0的管理工具却比在pb6中的优秀很多,使用manager adaptive server anywhere这个工具就能很轻松地对数据库进行操作。 |
| 首先,如果大家已经正确安装了pb7.0.1后,就可以通过以下步骤来启动manager adaptive server anywhere:开始→sybase→manager adaptive server anywhere。 |
| 启动后出现管理界面,再按如下步骤:选菜单tools→connect→adaptive server anywhere,再选择你在系统odbc中配置好的数据源(pb7.0.1对此处理比较好,把各种数据源都集成到系统的odbc配置中来进行,比较正规,可能初学者还不太适应吧!),如果有必要,可以在user id:和password:处输入连接数据库的用户名和口令,之后按确定,就进行数据库的连接。 | |
比如我们此次连接asa 6.0 sample,当然用户在实际应用中就要连接自己的数据库了,如果连接成功,会在sybase central下的adaptive server anywhere下出现asademo的图标了;双击鼠标,打开asademo;再双击asademo(dba),打开其下的tables,views,procedures&functions 等子项,单击rocedures&functions 项,在右边窗口中就会出现当前连接的数据库中所支持的过程和函数,在右边窗口中双击add function (template),此时会出现new function的窗口,窗口中有一个函数的大致框架,但为了实现在oracle中的nvl()函数,请将new function窗口中的语句改为如下的形式: | |
| create function nvl(in x text,in y text) |