Oracle

在 Toad for Oracle 中抑制 PL/SQL 腳本的一些輸出

  • December 28, 2021

問題: 在 Toad 中執行的 PL/SQL for Oracle 中,除了我想查看的某些行之外,我可以禁止腳本輸出嗎?例如,我不想創建表、插入記錄、刪除表。我確實想要我自己的 dbms_output.put_line 消息。

範例: 這是我目前的輸出文件。(這是簡化的,但它顯示了我收到的消息類型。)

 PL/SQL procedure successfully completed.
Commit complete.
Table created.
1 row created.
1 row created.
1 row created.
Dropping table: ER_TEST001S_RES
Checking results for test001s
        PASS: All records on _res expected results table have matches on actual results table for test001s
        PASS: All records on _res actual results table have matches on expected results table for test001s
 PL/SQL procedure successfully completed.
Commit complete.

我的首選輸出如下所示。

Checking results for test001s
        PASS: All records on _res expected results table have matches on actual results table for test001s
        PASS: All records on _res actual results table have matches on expected results table for test001s
Checking results for test002s
        PASS: All records on _res expected results table have matches on actual results table for test002s
        PASS: All records on _res actual results table have matches on expected results table for test002s

上下文: 我正在使用 PL/SQL 來測試一個作為數據庫過程執行的計算程序。我的腳本插入測試記錄,對其執行計算過程,創建預期結果表,並將預期結果與實際結果進行比較。(我在每次測試執行時刪除/創建測試對象和預期結果表,以便在從開發環境轉移到測試環境時一次快速輕鬆地執行所有測試。)目前我在 Toad 的自動化設計器中有一個操作來執行腳本對於所有測試,使用“set serveroutput on”並將輸出轉到我檢查是否有任何測試失敗的文件。

目標: 修飾腳本輸出以僅顯示通過 dbms_output 發送的與測試步驟的通過/失敗狀態相關的行。我找不到合適的搜尋詞來獲得領先。是否可以?

如果您通過 執行SQL*Plus,您可以使用set feedback off來抑制這些消息。TOAD 支持SQL*Plus命令子集,所以我不確定它是否支持關閉回饋,但我希望它會支持。

不過,就個人而言,我強烈希望擺脫對dbms_output這裡的依賴。一旦有人將幾個dbms_output調試命令添加到您正在測試的程序之一,您建構的任何內容都會被搞砸。test_results另外,您已經在數據庫中——在某個地方有一個表,您可以在其中插入數據,然後在測試套件完成後對其執行查詢(即按狀態獲取計數),這似乎更有意義。如果您將這些歷史儲存並添加一些時間戳,那麼您就可以執行諸如查看性能隨時間的變化以及類似性質的事情之類的事情。

這是一個解決方法,它給了我我想要的東西,但沒有解決我的問題。在這裡記錄它以防它對某人有用。

我能夠將最終的通過/失敗檢查腳本放在 Toad 的自動化設計器中的單獨操作中,並帶有單獨的輸出文件。每個測試的前幾個腳本寫入一個文件,每個測試的最後一步寫入第二個文件。第二個文件在每個測試中確實有一組 PL/SQL 完成和送出行,但不是所有的 create/insert/drop。

引用自:https://dba.stackexchange.com/questions/249231