OceanBase 数据库 V2.x 及后续版本。
用户从 Oracle 迁移到 OceanBase 数据库的 Oracle 模式存储过程中存在不兼容语法,提示存在无效对象。
用户从 Oracle 迁移的存储过程可能很长,但是目前 ODC 等图形工具还不支持 Oracle PL/SQL Developer 工具等图形界面编译存储过程、函数、包等语法校验提示。
较大的存储过程创建和在 OeceanBase 数据库的编译调试较为困难。但可以在 OBClient 中创建或编译后,查看 OBClient 客户端返回错误信息方式辅助定位。
对于语法错误,可以通过错误信息查看存在语法错误文本的位置,以及部分错误文本。例如 ORA-00900 表示语法错误。
obclient> CREATE OR REPLACE PROCEDURE proc_t1 AS CURSOR c1 IS SELECT * FROM t1; BEGIN FOR x IN c1 LOOP DBMS_OUTPUT.put_line(x); END LOOP; END proc_t1; /
ORA-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 't1' at line 1
对于语义错误,可以通过 SHOW ERRORS
命令查看。
SHOW ERRORS
可以展示编译过程中的语义错误,您可以根据错误提示信息修改存储过程。有关语义错误的详细原因,请参见《OceanBase 数据库 参考指南》 中的 错误码 章节。
