Oracle
將多個值傳遞給 Oracle 中的 sqlplus 腳本
我想執行相同的 sql 腳本,每次傳遞一個文本,但我不知道怎麼做。我想把它做成sqlplus。
有了這個選擇,我有了值,但我不知道如何傳遞這些值。
select column_value from table(sys.dbms_debug_vc2coll('Logons Per Sec', 'Executions Per Sec'))) LOOP start script.sql column_name; END LOOP;
我不明白你的例子。我曾嘗試使用,但它不起作用。我想將兩個值都傳遞給“prueba.sql”(每次執行一個)
cat prueba.sql prompt &1; SQL> COL column_value NEW_VALUE v_column_value SQL> select column_value column_value from table(sys.dbms_debug_vc2coll('Logons Per Sec', 'Executions Per Sec')); COLUMN_VALUE -------------------------------------------- Logons Per Sec Executions Per Sec SQL> @prueba.sql &&v_column_value Executions
我想每次在 prueba.sql 中執行一個報告,其中一個值作為參數。
謝謝
您可以
COLUMN
在 SQL*PLUS 中使用命令,如下所示。SQL> COL column_value NEW_VALUE v_column_value SQL> select column_name column_value from table(sys.dbms_debug_vc2coll('Logons Per Sec', 'Executions Per Sec'))); SQL> @"test.sql" &&v_column_value
文件: SQL*PLUS 中的列
我不知道 SQLPLUS 中可用的循環構造,因此您需要呼叫 prueba.sql 兩次 - 每個返回的參數一次。
COL column_value NEW_VALUE v_column_value SELECT rn, column_value FROM ( select rownum as rn,column_value from table(sys.dbms_debug_vc2coll('Logons Per Sec', 'Executions Per Sec')) order by column_value desc) WHERE rn = 1 / @prueba.sql '&v_column_value' SELECT rn, column_value FROM ( select rownum as rn,column_value from table(sys.dbms_debug_vc2coll('Logons Per Sec', 'Executions Per Sec')) order by column_value desc) WHERE rn = 2 / @prueba.sql '&v_column_value'
第一行設置了一個 SQLPLUS 屬性值,該屬性值由返回“column_value”的查詢填充。
查詢按名稱排序,但根據 ORDER BY 之後的 ROWNUM 選擇每個值。這應該確保兩個查詢以相同的順序返回記錄,但查看返回的單獨行。
‘v_column_value’ 參數的使用包含在單引號中,因為您嵌入了空格。