1. 金仓数据库 90%以上语法兼容 oracle,因此适配的时候数据库访问对象获取到的 dbtype =
“oracle”, 并用 originDBType = “jc” 进行区分。
2. 金仓数据库不支持批量插入 insert all 语法
解决办法:涉及 insert all 的内容。全部兼容到非 oracle 数据库的处理逻辑分支下。如图
//金仓数据库不能进入此逻辑分支。
3. 金仓数据库不支持 table()关键字
解决办法:改为执行 Mysql 数据库类型的处理逻辑,相关函数按 mysql 的模式重写。
4. 不支持’dbms_lob.substr 的使用
解决办法:改成 instr
5. 不支持 oracle.sql.Clob、empty_clob()
解决办法使用’!"jc".equalsIgnoreCase(rs.getOrgindbtype())执行非 oracle 逻辑。
6. 返回自增主键字段值,oracle 通过 retuning 实现,金仓不支持。例如:
ps=conn.prepareCall("begin insert into actionexecutelog(actionid)
values('test') returning id into ?;end;");
ps.registerOutParameter(1,Types.VARCHAR);
ps.executeUpdate();
Object id=ps.getObject(1);
解决办法:
ps=conn.prepareStatement("insert into actionexecutelog(actionid)
values('test')",new String[]{"id"});
ps.executeUpdate();
ResultSet rs=ps.getGeneratedKeys();
rs.next();
int id=rs.getInt(1);
7. 金仓数据库 sequence 不支持 nomaxvalue 参数
解决办法:需要将 NOMAXVALUE 改为’MAXVALUE<9223372036854775807;
8. 金仓数据库不支持用 executeUpdate()执行存储过程,例如:
评论0
最新资源