DBE_PLDEVELOPER.gs_errors
用于记录PL/SQL对象(存储过程、函数、包、包体)编译过程中遇到的报错信息,如表1所示。
打开plsql_show_all_error参数后,如果编译过程中存在报错,则会跳过报错继续编译并把报错信息记录在gs_errors中,如果关闭plsql_show_all_error参数,且behavior_compat_options参数不为skip_insert_gs_source,则会直接将报错信息插入此表中。
该表的owner是创建的用户,修改存储过程或者package的owner不会修改该表信息。
1、创建包头时的开头(as/is之前)和结尾(end之后),如果出现错误,不会记录在gs_errors表格里面,会直接在客户端返回错误的行号和该行具体内容,返回的行号不一定准确。个别is本身和end本身错误场景也不会记录在gs_errors表格里面。
2、创建包体时的开头(as/is之前)和结尾(end之后),如果出现错误,不会记录在gs_errors表格里面,会直接在客户端返回错误的行号和该行具体内容,返回的行号不一定准确。个别is本身和end本身错误场景也不会记录在gs_errors表格里面。
3、创建包体时,函数或者存储过程的结尾(end之后),如果出现错误,不会记录在gs_errors表格里面,会直接在客户端返回错误的行号和该行具体内容,行号不一定准确。
4、创建包体时,函数或者存储过程的开头(as/is 以及 as/is之前),如果出现错误,报错行数不准确。
5、创建包头时,变量声明少分号,会记录在gs_errors表格里面,记录的报错行号不准确。开启参数不会记录。
6、包体内存储过程或函数内部,自治事务标识符PRAGMA AUTONOMOUS_TRANSACTION声明错误时,不能确保是否能记录在gs_errors表里。
7、客户端直接报错,但是gs_errors表格未记录的情况,如果客户端报错行号不对,本需求不纠正已报错的行号。
8、对于类似if ....then、for....loop、when .... then语句中间的错误或EXCEPTION本身错误,报错行号在本行,而不是下一个分号所在行。
9、包内存储过程或函数内部begin本身错误的场景,报错行数不准。