2013-03-21 51 views
1

我有一個bash腳本通過sqlplus中運行多個SQL文件:如何將參數傳遞給在sqlplus中使用START調用的sql文件中的PL/SQL塊?

sqlplus $connectioninfo << end 
start file1.sql 
start file2.sql 
start file3.sql $variable 
quit 
end 

文件3有一定的PL/SQL:

BEGIN 

    DBMS_OUTPUT.PUT_LINE(&1); 

END; 
/

,但它只是打印文字"&1"代替的$variable值。我也試圖在文件3如下:

DEFINE var_a = &1; 
BEGIN 

    DBMS_OUTPUT.PUT_LINE(var_a); 

END; 
/

,並執行以下操作:

DECLARE 
    var_b VARCHAR2(64) := &1; 

BEGIN 

    DBMS_OUTPUT.PUT_LINE(var_b); 

END; 
/

最後:

DEFINE var_a = &1; 

DECLARE 
    var_b VARCHAR2(64) := var_a; 

BEGIN 

    DBMS_OUTPUT.PUT_LINE(var_b); 

END; 
/

但是,我得到的各種錯誤或只是文本值'& 1'爲所有這些。

+1

只是小幅盤整 ... >>結束 應該是相當 ...... <<結束 – igr 2013-03-21 22:17:37

+0

感謝。只是修復它。 – xdhmoore 2013-03-21 22:19:53

回答

3

嘗試將SET DEFINE ON添加到腳本的開頭file3.sql

如果SET DEFINEON,則SQL * Plus將用它們的值替換&...替換參數。如果SET DEFINEOFF(它似乎適合您),SQL * Plus將不會執行此操作。

+0

謝謝。的確,我的file1.sql裏有一個'set define off'。 – xdhmoore 2013-03-21 22:34:59

相關問題