有沒有方法可以在沒有用戶輸入的情況下在sqlplus腳本中設置參數默認值?未傳遞參數的默認值SQLPlus腳本
例如,我有一個SQL腳本sessions.sql中:
SET VERIFY OFF SET TERMOUT OFF DEFINE uname = '&1' COLUMN search_uname new_value search_uname SELECT CASE WHEN '&uname' = '' THEN '%' ELSE UPPER('&uname') END AS search_uname FROM dual; SET TERMOUT ON SELECT sid, serial, username FROM v$session WHERE username LIKE '&search_uname';
我想從sqlplus中調用它是這樣的:
SQL> @sessions Enter value for 1: SID SERIAL# USERNAME ---------- ---------- ------------------------------ 56 20577 CONTEXT ..... 236 rows selected. SQL> @sessions "" SID SERIAL# USERNAME ---------- ---------- ------------------------------ 56 20577 CONTEXT ..... 236 rows selected. SQL> @sessions SDE SID SERIAL# USERNAME ---------- ---------- ------------------------------ 113 56675 SDE 165 64881 SDE ..... 43 rows selected. SQL>
我只能通過對參數的空值當我被要求輸入它時,或者我能夠通過「」在腳本名稱之後傳遞一個空的參數。但是這種行爲非常煩人。某些IF定義爲「& 1」將非常有用。
您是否有任何提示或技巧如何實現應用WHERE條件在sqlplus腳本中wheter參數是否定義或沒有不必要的用戶交互?
解決方案
據馬丁鏈接的文章中,我修改的是工作不aksing參數值前一個腳本:
SET VERIFY OFF SET TERMOUT OFF column 1 new_value 1 SELECT '' "1" FROM dual WHERE ROWNUM = 0; define uname = '&1' SET TERMOUT ON SELECT sid, serial#, username FROM v$session WHERE username LIKE UPPER(DECODE('&uname', '', '%', '&uname')); undefine 1
非常感謝您指點我一篇優秀的文章。 – adrive