2016-08-05 8 views
0

У меня есть файл .sql с именем Alter_table.sql, который имеет следующий код.Выполнение sql-файла из другого файла sql

alter table mytable add newcolumn VARCHAR2(1); 

Я не хочу редактировать этот файл и добавлять команду спула. Однако мне нужно выполнить Alter_table.sql, написав катушку в другом файле (execute_sql.sql), который должен выглядеть следующим образом. Я не уверен в правильном синтаксисе. Кто-нибудь может помочь здесь?

SET SERVEROUTPUT ON 
SET DEFINE OFF 
SPOOL Alter_Table_STD_SOURCE.log 

EXEC username/[email protected] `Alter_table.sql` 

SPOOL OFF; 
SET DEFINE ON 
SET SERVEROUTPUT OFF 
+0

Как вы это используете - вы уже подключились к базе данных к этому моменту? –

+0

Я использую командную строку, с помощью которой я сначала направляюсь к этому пути (например, c: \ Scripts). Затем я дам commend sqlplus username/password @ database. Затем @ execute_sql.sql –

+0

ОК, то вы уже подключены, и вам просто нужна '@ Alter_table.sql' часть ответа Гэри (вместо' exec'), без явного 'connect'. –

ответ

1

(Спасибо Alex Poole) :-)

Вам необходимо подключить первый, затем запустить файл .sql в сценарии оболочки, используя знак '@' или команды 'Пуск':

... 
-- Connect if not already connected. 
CONNECT username/[email protected] 

@Alter_table.sql 

... 

Я не уверен, что это хорошая идея сохранить логин/пароль в файле, но вам необходимо принять во внимание безопасность.

+1

'@ Alter_table.sql', или [' start'] (https://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_five.htm#i1210918); а не 'exec', который является сокращением для анонимного блока PL/SQL. –

+0

Конечно, спасибо. Я исправлю свой пример. –

 Смежные вопросы

  • Нет связанных вопросов^_^