2009-11-05 39 views
1

我有一個使用EXECUTE IMMEDIATE執行查詢的PL/SQL語句。但是,我很難搞清楚如何獲取正在執行的查詢的文本。由於查詢大於255個字符,因此我無法使用dbms_output。有沒有什麼辦法讓sqlplus回顯傳遞給EXECUTE IMMEDIATE的字符串?如何在sqlplus中調試Oracle動態sql?

回答

3

您使用的是哪個版本的Oracle? 255是DBMS_OUTPUT.PUT_LINE().的默認行長度在10g之前,我們可以在一次調用中顯示1048個字符。從那以後它是32K。

或者您應該考慮使用支持DBMS_DEBUG的IDE。例如,SQL Developer就是這樣做的,而且它是免費的。 Find out more

+1

嗯...我可能一直在看過時的信息。我想這意味着什麼都沒有被執行,我認爲它是。 : - / – 2009-11-05 17:06:51

0

您可以嘗試將分析器附加到數據庫(老實說我只對SqlServer做過),並運行該過程,因爲分析器將顯示對數據庫所做的任何查詢,您將可以在該數據庫中進行查詢並執行必要的調試。 希望它有幫助..

0

如何一次打印大字符串N個字符。 修改以適應您的需求。

FOR i IN 0..10 LOOP 
    dbms_output.put_line(substr(my_very_long_string,i*100+1,100)); 
END LOOP; 
0

您可以將字符串插入日誌記錄/臨時表並檢查它。