关于使用同一套PB代码兼容多个数据库(如ORACLE和SQLSERVER)

yoan2014 2015-05-08 11:57:57
以前都一直在SQLSERVER数据库下做开发,最近想要兼容ORACLE,数据库,但是在转换的过程中很多数据库的函数名称等都不一样,如果要实现同一套PB代码下兼容这两套数据库不知道大家平常是怎么做的,希望大家集思广益发表一下自己的看法。
...全文
2491 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1、写标准的sql,不要写带有特色的sql,如oracle的decode函数。 2、用odbc连接,odbc也提供了一些简单的函数,如{fn ifnull()}完全可以代替nvl、 isnull之类特色的函数。 3、复杂的业务逻辑不要在数据库的触发器或存储过程完成,能用代码实现的尽量不用数据库做。 能实现以上三点,基本能支持市面上流行的关系型数据库。
鸡翅多 2015-05-20
  • 打赏
  • 举报
回复
一套代码兼容不同数据库,需要自己写一层数据库的操作,所有和数据库操作都封装在这一层,所有数据窗口都用外部数据源实现,这样应该可以满足你的要求,就是前期费些事,后面架子都搭起来了,效率也不会太慢
SWELLXXJ 2015-05-10
  • 打赏
  • 举报
回复
不通用的,做成条件,连接不同的数据库时,使用不同的语法
fengxiaohan211 2015-05-09
  • 打赏
  • 举报
回复
有些需要单独处理的·
A啦Dbit 2015-05-08
  • 打赏
  • 举报
回复
遇到不通用的就封装函数处理 比较麻烦
qq_1919561306 2015-05-08
  • 打赏
  • 举报
回复
如果可以通用,则这样写: select (a.col1) as col1, (a.col2) as col2 from table_name a 不通用的就做二个dw,以_ora,_sql来区别 如 dw_mmkt_ora,语法如下 (a.col1) as col1, (a.col2) as col2 from table_name a where nvl(a.col1,0)<>0 如 dw_mmkt_sql,语法如下 (a.col1) as col1, (a.col2) as col2 from table_name a where isnull(a.col1,0)<>0
WorldMobile 2015-05-08
  • 打赏
  • 举报
回复
也可以考虑采用统一接口Jdbc或者Odbc来实现,或者写一个统一的函数,根据特色对sql进行转化,转化为可以识别的sql
WorldMobile 2015-05-08
  • 打赏
  • 举报
回复
引用 楼主 yoan2014 的回复:
以前都一直在SQLSERVER数据库下做开发,最近想要兼容ORACLE,数据库,但是在转换的过程中很多数据库的函数名称等都不一样,如果要实现同一套PB代码下兼容这两套数据库不知道大家平常是怎么做的,希望大家集思广益发表一下自己的看法。
如果要兼容的话,建议采用统一的sql语句,如果要用特色的sql,肯定不一行 或者你可以考虑采用sqlserver,然后再向oracle迁移,把sql进行对应调整

794

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 项目管理
社区管理员
  • 项目管理
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧