2012-03-13 44 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

相關問題