2017-08-28 54 views
1

我書面方式腳本(000-Install.sql)執行多個SQL腳本(001-sys.tab失敗,002-ENCA .tab等),在控制檯中。腳本在sqlplus,在執行多個腳本

所以要開始,我添加了只有兩個腳本:

-- 000-Install.sql 
spool upgradeSP1Ora.log 

start 001-sys.tab; 
start 002-enca.tab; 

commit; 

這裏所包含的腳本的內容:

-- 001-sys.tab 
select * from empr; 
/


-- start 002-enca.tab 
select * from dte_enca_docu; 
/

但由於某些原因,執行提示是這樣的:

CODI_EMPR NOMB_EMPR        GIR 
---------- ---------------------------------------- --- 
DIRE_EMPR          CODI_COM CODI_CIU RUTT_EMPR 
-------------------------------------------------- -------- -------- ------- 
D CODI_RAMO NFAN_EMPR        CODI_PERS 
- ------------ ---------------------------------------- ---------------- 
EMPR_CODG EMPR_NOMB        FONO_EMPR 
---------- ---------------------------------------- -------------------- 
RUTT_REPL D NOMB_REPL      CAC MUT POMU_EMPR POCA_EMPR 
---------- - ----------------------------------- --- --- ---------- ------- 
FECA_EMP FEMU_EMP CIN CUEN_EMPR CAJ COLOR_EMPR  LOGO_EMPR 
-------- -------- --- ------------ --- --------------- --------------- 
CODI_EMEX      CLAV_ENCR 
------------------------------ ------------------------------ 
ASUN_FACT_EMPR 
--------------------------------------------------------------------------- 
TEXT_FACT_EMPR 
---------------------------------------------------------------------------- 
385 

而第二個腳本(開始002-en ca.tab)永遠不會執行。

問題是我的腳本文件的執行沒有正確完成(至少看起來是這樣),並且阻止我的第二個腳本運行。

注:如果我按進入 加一的數量,如果我打CTRL +ç執行將被取消。腳本的

回答

0

嘗試以下內容:

-- 000-Install.sql 
set termout off 
spool upgradeSP1Ora.log 

@ 001-sys.tab; 
@ 002-enca.tab; 

exit; 

--001-sys.tab 
select * from empr; 

--002-enca.tab 
select * from dte_enca_docu; 

執行sqlplus爲:

sqlplus -l -s user/[email protected] @ 000-Install 
+0

謝謝@位於0xDB,你的回答讓我在正確的軌道,但實際溶液中加入'/ '在一些腳本之後(不是每個腳本都需要一個腳本)。這是幫助我理解'/'需求的解決方案:https://stackoverflow.com/a/10207695/6780663。 –

+0

@AlejandroMontilla歡迎您。只有帶嵌入塊的語句需要斜槓,因爲分號結束塊而不是完整的語句。 select不需要,因爲分號結束並執行帶下劃線的語句。因此我刪除了斜槓。 – 0xdb

+0

我明白了,謝謝你的澄清,你是對'select's不需要'/',在我的情況下只有具有'CREATE PROCEDURE'的腳本才需要它。 –