Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个sql文件执行sql文件_Sql_File_Oracle11g_Sqlplus_Spool - Fatal编程技术网

从另一个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
,或者;not
exec
,它是匿名PL/SQL块的简写。您是如何运行此程序的?此时您是否已连接到数据库?我使用命令提示符,首先通过命令提示符指向该路径(例如c:\Scripts)。然后我将给出sqlplus用户名/password@database. 然后@execute\u sql.sqlOK,那么您已经连接了,您只需要Gary答案的
@Alter\u table.sql
部分(而不是
exec
),而不需要显式的
连接。