尊敬的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 网址:www.intmes.com 微博:https://weibo.com/intmes 地址:北京市海淀区上地东路35号院1号楼1层颐泉汇大厦D129