从另一个sql文件执行sql文件
我有一个名为从另一个sql文件执行sql文件,sql,file,oracle11g,sqlplus,spool,Sql,File,Oracle11g,Sqlplus,Spool,我有一个名为Alter\u table.sql的.sql文件,其中包含以下代码 alter table mytable add newcolumn VARCHAR2(1); 我不想编辑此文件并添加spool命令。但是,我需要通过在另一个文件(execute_sql.sql)中写入spool来执行Alter_table.sql,该文件应该如下所示。我不确定语法是否正确。有人能帮忙吗 SET SERVEROUTPUT ON SET DEFINE OFF SPOOL Alter_Table_STD_
Alter\u table.sql的.sql
文件,其中包含以下代码
alter table mytable add newcolumn VARCHAR2(1);
我不想编辑此文件并添加spool命令。但是,我需要通过在另一个文件(execute_sql.sql)中写入spool来执行Alter_table.sql
,该文件应该如下所示。我不确定语法是否正确。有人能帮忙吗
SET SERVEROUTPUT ON
SET DEFINE OFF
SPOOL Alter_Table_STD_SOURCE.log
EXEC username/password@database `Alter_table.sql`
SPOOL OFF;
SET DEFINE ON
SET SERVEROUTPUT OFF
(感谢亚历克斯·普尔):-)
您需要先连接,然后使用“@”符号或“START”命令在包装器脚本中运行.sql文件:
...
-- Connect if not already connected.
CONNECT username/password@database
@Alter_table.sql
...
我不确定将登录名/密码保存在文件中是否是一个好主意,但您需要考虑安全性。@Alter\u table.sql
,或者;notexec
,它是匿名PL/SQL块的简写。您是如何运行此程序的?此时您是否已连接到数据库?我使用命令提示符,首先通过命令提示符指向该路径(例如c:\Scripts)。然后我将给出sqlplus用户名/password@database. 然后@execute\u sql.sqlOK,那么您已经连接了,您只需要Gary答案的@Alter\u table.sql
部分(而不是exec
),而不需要显式的连接。