2017-08-28 55 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'的脚本才需要它。 –