2013-07-22 14 views
3

Я нашел эту строку в коде SQL:Что означает «@» делать в SQL * Plus

@../../sql_scripts/create_tables.sql 

Что делать? Я знаю, что @@file.sql означает, что файл.sql запущен, и @ может использоваться, когда мы хотим указать значения параметров позже, но здесь у меня есть @, за которым следует имя файла. Я знаю, что есть аналогичный вопрос, но он охватывает только @ в запросах.

+2

@DarkCthulhu - Не дубликат этого вопроса. Это не параметр здесь. Сорин, какой инструмент обрабатывает этот SQL? –

+0

Моя ошибка. Не тот же вопрос. –

+1

Что вы подразумеваете под SQL, TSQL, PSQL или чем-то еще с синтаксисом SQL-стиля? Код в вашем вопросе недействителен как стандартный SQL. Вероятно, вы используете какой-то препроцессор, который рассматривает эту строку как include или execute. – Jodrell

ответ

4

Здесь @ не является частью языка SQL. Это, скорее всего, команда для интерпретатора SQL, которая, вероятно, является Oracle SQL * Plus.

SQL * Plus имеет команды много односимвольный как @ или / (который выполняет буферизованный SQL), ;, которые могут сбить с толку, когда вы столкнетесь с ними в .sql файле.

@ документально зарегистрирован here в документации Oracle 9i. Там вы увидите различия с @@.

documentation for Oracle 11g Release 2, щелкните Next section для ссылки @@.

+0

выглядит вероятным кандидатом. – Jodrell

1

@ позволяет импортировать еще один скрипт в SQL-скрипт, который вы используете в SQL * Plus.

Например, это выполняет содержимое otherscript.sql в указанной точке:

PROMPT about to run other script 

@otherscript.sql 

PROMPT finished running other script 

Другой пример, это вставляет содержимое другого файла в середине заявления, которое будет выполнен в SQL * Plus:

SELECT * FROM mytable WHERE 
@predicates_for_mytable.sql 
AND bla = 1; 

Единственное условие состоит в том, что @ должен отображаться на 1-м символе на линии.

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