尊敬的IvorySQL技术支持团队:
您好!
我目前正在使用IvorySQL进行Oracle数据库的迁移适配测试,在使用过程中遇到了一些Oracle兼容性问题。现将测试发现的具体问题整理如下,希望贵团队能够给予技术支持或确认相关解决方案。
测试环境
- 数据库版本:IvorySQL v5.3
- 运行环境:Docker镜像
ivorysql/ivorysql:5.3-ubi8问题详情
兼容模式切换问题
- 问题描述:使用
-m oracle参数启动数据库无效,连接1521端口也未自动进入Oracle模式,必须手动执行SET ivorysql.compatible_mode TO 'oracle';才能切换。- 咨询:这是设计如此还是配置问题?是否有更便捷的兼容模式切换方式?
REF CURSOR语法不支持
- 问题SQL:
CURSOR cursor_SeqPlanInfo IS xxx- 错误信息:ERROR: type "cursor_SeqPlanInfo" does not exist
- 当前解决方案:改用PostgreSQL的 cursor_SeqPlanInfo CURSOR FOR xxx
包内不支持局部类型定义
- 问题描述:在Package内部定义局部类型会报错,需要将类型创建为外部类型。
不支持AS OBJECT语法
- 问题SQL:
create TYPE T_IDOC_ITEM_TYPE AS OBJECT- 当前解决方案:改为
create TYPE T_IDOC_ITEM_TYPE AS类型属性不支持%TYPE
- 问题SQL:在CREATE TYPE中使用
CompNo BOM.CompNo%TYPE- 错误信息:
ERROR: syntax error at or near "%" SQL state: 42601- 当前解决方案:直接指定具体类型如VARCHAR2
不支持TABLE OF语法
- 问题SQL:
create TYPE Table_SAPLineMatStatus IS TABLE OF Record_SAPLineMatStatus;- 错误信息:
ERROR: syntax error at or near "IS" SQL state: 42601- 当前解决方案:改用PostgreSQL数组或SETOF语法
不支持PIPELINED函数
- 当前解决方案:使用PostgreSQL的SETOF语法替代
不支持RETURN TABLE语法
- 问题SQL:
FUNCTION ProduceOrder_Divide(p_ProduceOrder IN VARCHAR2) RETURN Table_CutPOInfo;- 当前解决方案:使用PostgreSQL的数组或SETOF语法
技术咨询
- 上述语法不兼容是已知限制还是有计划在未来版本中支持?
- 是否有官方的Oracle迁移指南或语法对照文档?
- 对于包内局部类型的限制,是否有推荐的架构设计模式?
感谢贵团队开发如此优秀的开源数据库产品,期待IvorySQL在Oracle兼容性方面能够持续改进。
祝好!
刘世鑫 研发部
北京元工国际科技股份有限公司
电话:010-62987085 邮箱:liusx@intmes
.com 地址:北京市海淀区上地东路35号院1号楼1层颐泉汇大厦D129