以下是我的代码中的程序:
PROCEDURE OutputShipTo (MonRec IN OUT meta_imi_monitor%ROWTYPE,
CustomerChangesRec IN CustomerChanges%ROWTYPE,
InType In CHAR)
IS
BEGIN
EXECUTE IMMEDIATE sql_stmt_loc_insert USING 'ZMSH', 'ZMSH',
CustomerChangesRec.cab_id,CustomerChangesRec.tab_id,'ZMSH';
END;
执行此程序时,我收到以下错误:
ERROR at line 1:
ORA-00904: invalid column name
ORA-06512: at line 601
ORA-06512: at line 1114
它只是给我一个程序位置的错误行号和它被调用的地方。可能在DML的'sql_stmt_loc_insert'中有一个无效的列,但是我无法弄清楚它在哪里。有什么办法,我可以从DML stmt的'sql_stmt_loc_insert'中找出确切的错误行号,这样我就可以看到无效的列并更正它。
由于行数非常多,我无法提供'sql_stmt_loc_insert'的代码。
谢谢!
答案 0 :(得分:3)
使用EXECUTE IMMEDIATE
界面,无法获得有关错误的更多细节。
通常,人们调试生成动态SQL的代码的方式是在调用EXECUTE IMMEDIATE
之前打印(到控制台或日志表)SQL语句和绑定变量。然后,您可以以交互方式运行代码,以获得有关错误的更多细节。