2012-03-13 47 views
1

下面是在我的代码的程序:确切错误行号EXECUTE IMMEDIATE

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'的代码。

谢谢!

回答

3

对于EXECUTE IMMEDIATE接口,无法获得关于错误的更多细节。

通常,人们调试生成动态SQL的代码的方式是在调用EXECUTE IMMEDIATE之前将SQL语句和绑定变量(打印到控制台或日志表)打印出来。然后,您可以交互式运行代码以获取有关错误的更多细节。

+0

非常感谢您的线索。我把我的sql代码放到一个日志表中,在这里,我得到了冒犯的列名。 – prashant1988 2012-03-14 16:36:32

相关问题