本文介绍 OceanBase 数据库 Oracle 兼容模式下如何通过 user_errors 视图查看包、包体、存储过程等对象上次编译错误信息。
操作步骤
以 Oracle Mode 为例,在创建包、包体、存储过程时如果提示 warning 信息,可以通过查询 user_errors 视图查看编译过程的具体错误信息。
示例如下。
创建存储过程。
obclient [SYS]> create or replace procedure pro is a int := 1; begin b := 1; end; / Query OK, 0 rows affected, 1 warning (0.071 sec)查看
user_errors视图。obclient [SYS]> select * from user_errors;输出结果如下。
+-------+------+-----------+----------+------+----------+--------------------------------------------+-----------+----------------+ | OWNER | NAME | TYPE | SEQUENCE | LINE | POSITION | TEXT | ATTRIBUTE | MESSAGE_NUMBER | +-------+------+-----------+----------+------+----------+--------------------------------------------+-----------+----------------+ | SYS | PRO | PROCEDURE | 0 | 4 | 2 | PLS-00201: identifier 'B' must be declared | ERROR | -5543 | +-------+------+-----------+----------+------+----------+--------------------------------------------+-----------+----------------+ 1 row in set (0.138 sec)通过视图
user_errors可以看出,sys owner 下的存储过程 pro,在编译第 4 行 第 2 列报错了,报错原因是变量B找不到定义。同理,user_errors/all_errors 也可以找到该报错信息。
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。