oralce和db2兼容开发注意事项

数据库兼容,在开发项目过程中,难免会遇到 更改数据库,或者后期 项目升级,也可能会遇到这种情况,这里就说明下oralce和db2兼容开发注意事项。

兼容oralce、db2开发注意事项(前提是db2版本是9.7,且是开启PLSQL编译选项之后创建的数据库):

 1. 在like 之后若使用了表字段,应统一改成使用locate函数

如:
  oralce写法:
   select * from fw_right a where '03' like a.rightid||'%';
  兼容写法:
   select * from fw_right a where locate('03',a.rightid) = 1;
  oralce写法:
   select * from fw_right a where '03' like '%'||a.rightid||'%';
  兼容写法:
   select * from fw_right a where locate('03',a.rightid) > 0;

 2. 视图中使用的别名不应该与当前表字段同名

如以下语句,在Oracle中不会有问题,但在db2中会报"SQL0153N"错误:

 e.g:
  CREATE OR REPLACE VIEW V_WF_TODOLIST AS
     select c.process_def_id, c.process_def_name, a.action_def_id,
       a.work_item_id,  a.bae007,      a.action_def_name,
       a.state,     a.pre_wi_id,    a.work_type,
       a.operid,     a.x_oprator_ids,  b.process_key_info,
       to_char(to_date(a.start_time,  'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as start_time,
       to_char(to_date(a.complete_time,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as complete_time,
       a.filter_opr, a.memo,a.bae002,a.bae003, a.bae006,c.x_action_def_ids
 from wf_work_item a, wf_process_instance b, wf_action_def c
  where a.action_def_id = c.action_def_id
  and b.process_def_id = c.process_def_id
  and a.bae007 = b.bae007
  and a.state in('0','2')

       兼容写法:

CREATE OR REPLACE VIEW V_WF_TODOLIST AS
  select c.process_def_id, c.process_def_name, a.action_def_id,
   a.work_item_id,  a.bae007,      a.action_def_name,
   a.state,     a.pre_wi_id,    a.work_type,
   a.operid,     a.x_oprator_ids,  b.process_key_info,
   to_char(to_date(a.start_time,  'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as start_time_0,
   to_char(to_date(a.complete_time,'yyyymmddhh24miss'),'yyyy-mm-dd hh24:mi:ss') as complete_time_0,
   a.filter_opr, a.memo,a.bae002,a.bae003, a.bae006,c.x_action_def_ids
   from wf_work_item a, wf_process_instance b, wf_action_def c
   where a.action_def_id = c.action_def_id
   and b.process_def_id = c.process_def_id
   and a.bae007 = b.bae007
   and a.state in('0','2')

   3.在下列情况下不允许 ORDER BY 或 FETCH FIRST n ROWS ONLY: 

*  外层全查询视图
  *  "SQL 表函数"的 RETURN 语句中的外层全查询
  *  具体化查询表定义
  *  未用圆括号括起来的子查询

否则会报"SQL20211N  规范 ORDER BY 或 FETCH FIRST n ROWS ONLY 无效。"错误.

e.g:
  oralce写法:

  CREATE OR REPLACE VIEW V_FW_BLANK_BULLETIN as
  select id,   bae001, operunitid, operunittype, unitsubtype, ifergency,
    title, content, digest,  duetime,   validto,   aae100,
    bae006, bae002, bae003,  id as colid,
    substr(digest,1,20) as digest2
   from fw_bulletin
  where duetime <= to_char(sysdate,'yyyymmddhh24miss')
   and (to_char(validto) >= to_char(sysdate,'yyyymmddhh24miss') or validto is null)
   and aae100 ='1'
  order by ifergency desc, id desc, duetime desc

      兼容写法:

  CREATE OR REPLACE VIEW V_FW_BLANK_BULLETIN as
  select * from (select id,   bae001, operunitid, operunittype, unitsubtype, ifergency,
   title, content, digest,  duetime,   validto,   aae100,
   bae006, bae002, bae003,  id as colid,
   substr(digest,1,20) as digest2
  from fw_bulletin
  where duetime <= to_char(sysdate,'yyyymmddhh24miss')
  and (to_char(validto) >= to_char(sysdate,'yyyymmddhh24miss') or validto is null)
  and aae100 ='1'
  order by ifergency desc, id desc, duetime desc)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 提取oralce当天的alert log的shell脚本代码

    提取oralce当天的alert log的shell脚本 复制代码 代码如下: #/bin/sh#get alert of everyday#then name of file is everyday_alert.shdir="/oracle/admin/bbdz/bdump"num=$(cat -n ${dir}/alert_bbdz.log | grep "`date|cut -c 1-10`"|head -n 1 |awk '{print $1}') tail

  • Oralce中VARCHAR2()与NVARCHAR2()的区别介绍

    一.先来看看Oralce中VARCHAR2()和NVARCHAR2()的官方定义 官方文档定义如下: VARCHAR2(size [BYTE | CHAR]) Variable-length character string having maximum length size bytes or characters. Maximum size is 4000 bytes or characters, and minimum is 1 byte or 1 character. You must

  • oralce 计算时间差的实现

    oralce 计算时间差的实现 查询系统时间和给定时间相差的毫秒数 select ceil((sysdate - To_date('2017-03-23 00:00:00' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) 相差豪秒数 FROM DUAL; 将account表中第一条数据的dcur_state_start_date(timestamp类型)字段值的相差豪秒数算出来 select ceil((sysdate -TO_DATE( T

  • Oralce 归档日志开启与关闭示例

    查看oracle数据库是否为归档模式 SQL> select name,log_mode from V$database; NAME LOG_MODE ------------------ ------------------------ TEST NOARCHIVELOG SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_

  • oralce和db2兼容开发注意事项

    数据库兼容,在开发项目过程中,难免会遇到 更改数据库,或者后期 项目升级,也可能会遇到这种情况,这里就说明下oralce和db2兼容开发注意事项. 兼容oralce.db2开发注意事项(前提是db2版本是9.7,且是开启PLSQL编译选项之后创建的数据库):  1. 在like 之后若使用了表字段,应统一改成使用locate函数 如:   oralce写法:    select * from fw_right a where '03' like a.rightid||'%';   兼容写法:  

  • 微信小程序页面开发注意事项整理

    小程序的开发注意事项: 1.js文件 每个页面对应的js文件可以定义页面onReady,onLoad,onShow,onHide,onUnload,还有页面的数据,自定义的函数要写到一块,内部约定是都写到默认函数的后面.既"页面中先data,再默认函数,再自定义函数"方便review code,提高协作效率. 2.json文件 默认不能为空,即使没有内容也要为空数据{},原先定义在app.json中的内容,如果需要在当前页面中重新定义,那么只要把内容复制过来,直接赋新值即可,用于设置小

  • 60条Android开发注意事项与经验总结

    1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2.数据库表段字段常量和SQL逻辑分离,更清晰,建议使用Lite系列框架LiteOrm库,超级清晰且重心可以放在业务上不用关心数据库细节. 3. 全局变量放全局类中,模块私有放自己的管理类中,让常量清晰且集中. 4. 不要相信庞大的管理类的东西会带来什么好处,可能是一场灾难,而要时刻注意单一职责原则,一个类专心做好一件事情更为清晰. 5. 如果

  • 前端SVG样式颜色等开发注意事项

    SVG Scalable Vector Graphics 可缩放的矢量图形 起源 在 2003 年一月,SVG 1.1 被确立为 W3C 标准,在过去很长一段时间,网页注重文字和图片的展示,SVG就被遗忘了,随着网页对图形的要求越来越高,SVG又出现在人们的视野中. 关注点 可以从SVG这个名字就能瞄到我们第一个关注点在哪里,没错,就是可缩放的矢量图形,这个还是得从位图和矢量图说起,可以直白来说,位图缩放容易模糊,而矢量图一般不会,因为矢量图记录了位置信息,每次按照大小重新计算图形,而位图只能对

  • PHP开发注意事项总结

    1.使用内嵌的HTML代码,而不是PHP的echo语句. 因为PHP是一门嵌入式Web编程语言,可以将HTML代码和PHP代码相互嵌入.但是很多程序员担心在HTML代码中过多的使用""嵌入PHP代码会多次调用PHP解释器,从而降低了PHP代码的运行速度,所以宁愿使用PHP的echo语句来输出HTML代码,而不直接使用HTML代码.但事实却恰恰相反.每一个PHP页面只调用一次PHP解释器来解释所有的PHP代码,所以,只在需要时才嵌入PHP代码,而大多数的时候直接使用HTML代码输入结果,

  • angularJS开发注意事项

    作为一个coder,应该具有经常总结反思的习惯,如果不能及时总结,可能就会忘记自己踩过的很多坑,然后会导致同一个坑踩很多次,所以我打算把这些都记录下来,以方便是对自己的重复记忆,避免无效的coding,另一方面可以希望可以给遇到相似问题的同僚们一些收获. 1.手动触发脏检查 在开发过程中,我们可能经常会通过js来手动更改绑定的相关数据,而不是通过dom操作来改变绑定的相关数据,这样也很多情况下会导致绑定数据的视图不能够及时更新,这个时候就需要我们手动触发一下脏检查,下面我就介绍一下三种手动触发脏

  • ORACLE数据库应用开发的三十个注意事项

    引言 笔者及所在团队从2000年开始的CRM等系统开发,一直主要使用ORACLE数据库作为应用数据库,开发方式包括使用PLSQL编写存储过程/数据库函数/触发器.使用ODBC或OCI和ProC开发C++应用.使用JDBC开发Java应用.使用tuxdeo开发中间件应用等.这些应用开发笔者所在团队自己做过,也委托华为.亚信.思特奇等国内厂商合作做过,整体来说ORACLE数据库功能强大.性能出众.系统健壮,确实是OLTP联机事务处理的最受欢迎的数据库. 因ORACLE服务费居高不下.加上最近几年美国

  • 创建一个空的IBM DB2 ECO数据库的方法

    问:怎样才能创建一个空的 IBM DB2 ECO数据库? 答:一般情况下你需要一个空数据库作为存储 EcoSpace 的容器.Delphi 2005 提供了一张光盘,其中包括 IBM DB2 UDB 开发人员版.您可以使用 Control Center(可在 IBM DB2 General Administrator Tool 中找到).在 Control Center 中,可以使用树型视图来查看系统.DB2 实例和数据库.使用向导创建一个新的数据库,这将为您提供一个分为 7 步的向导,在那里只

  • DB2个人版(Linux)安装

    正在看的db2教程是:DB2个人版(Linux)安装.DB2个人版(Linux)安装 cowboy(zizhao_chen@yahoo.com)  the fe of swust  2003-10-23 关键字:  db2 linux 安装 摘要:  本文简略的介绍了db2 pe在linux系统上的安装过程. 目录:  DB2 PE简介  或者安装文件  准备安装环境  完成安装  测试  结论  资源 DB2 PE简介 DB2 Personal Edition(DB2 PE)是在低价位的商用硬

  • MySQL大小写敏感的注意事项

    由于这个原因,在阿里巴巴规约中这样要求: [强制]表名.字段名必须使用小写字母或数字 , 禁止出现数字开头,禁止两个下划线中间只 出现数字.数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑. 因此,数据库名. 表名.字段名,都不允许出现任何大写字母,避免引起不必要的麻烦. MySQL的大小写敏感是由参数控制的 mysql大小写敏感配置相关的两个参数,lower_case_file_system 和 lower_case_table_names. 查看当前mysql的大小写

随机推荐