Oracle SQL плюс, как завершить команду в файле SQL? - PullRequest
10 голосов
/ 07 декабря 2011

У меня есть файл SQL с несколькими командами.
Какой это правильный способ завершения строк в скрипте?
Это косая черта [/] точка с запятой [;] и то и другое?
Есть ли разница между обычным sqls и кодом хранимой процедуры?
Спасибо

Ответы [ 3 ]

26 голосов
/ 07 декабря 2011

Для обычных операторов SQL, либо / в отдельной строке, либо ; в конце команды, будет работать нормально.

Для операторов, которые включают код PL / SQL, например CREATE FUNCTION, CREATE PROCEDURE, CREATE PACKAGE, CREATE TYPE или анонимные блоки (DECLARE / BEGIN / END), a ; не выполнит команду. Поскольку PL / SQL использует точки с запятой в качестве разделителей строк, их использование в качестве разделителя команд должно быть исключено в этих операторах. Поэтому в этих случаях вы должны использовать / для выполнения команды.

По моему опыту, люди предпочитают использовать точку с запятой, когда это возможно, и косую черту только тогда, когда это необходимо.

Обратите внимание, что для клиентских команд SQLPlus, таких как SET или EXECUTE, терминатор команд вообще не требуется, хотя люди часто заканчивают их точкой с запятой по привычке.

2 голосов
/ 07 декабря 2011

; это способ, которым вы должны завершить свои команды sql, то же самое относится и к процедурам PLSQL:

select * from dual;

select sysdate from dual;

select table_name from user tables;

exec dbms_output.putline('Hello');

1 голос
/ 19 января 2016

Обычно мы можем использовать ";" для завершения оператора SQL,но для создания functions, triggers, procedures необходимо использовать "/" после ";", чтобы завершить оператор SQL.«/» может не потребоваться, если вы используете какой-либо инструмент для разработчиков, такой как oracle SQL developer, toad и т. Д., Но он должен быть обязательным, когда вы выполняете свой запрос непосредственно на компьютере с Linux.

...