Есть ли разница между Rem и - комментариями для SQL * Plus?

12

В приглашении SQL * Plus оба Remи --квалифицируются как индикаторы комментариев:

Rem this is a comment
-- this is also a comment
create table emp (
id number primary key,
name cvarchar2(40));

Есть ли какая-либо разница между двумя методами комментирования?

Lazer
источник
1
И не забудьте / * комментарий * / тоже действителен.
Гай

Ответы:

17

Разница в том, что --и /* */может использоваться в блоке PL / SQL, а REM[ARK]не может. В SQL * Plus будет работать следующее:

REM comment
-- comment
/* comment */
begin
   DBMS_OUTPUT.PUT_LINE('Test'); --comment
   DBMS_OUTPUT.PUT_LINE('Test'); /* comment */
end; 
/

Эти не будут:

begin
   DBMS_OUTPUT.PUT_LINE('Test'); REM comment
end; 
/

begin
   REM comment
   DBMS_OUTPUT.PUT_LINE('Test');
end; 
/

Документация 11.2 для всех типов комментариев содержит больше информации для комментариев. Основы ...

Вы можете вводить комментарии в скрипт тремя способами:

  • используя команду SQL * Plus REMARK для однострочных комментариев.

  • использование разделителей комментариев SQL / * ... * / для однострочных или многострочных комментариев.

  • использование комментариев ANSI / ISO (Американский национальный институт стандартов / Международная организация стандартов) - для однострочных комментариев.

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

Ли Риффель
источник
Справедливости ради, я никогда не сталкивался с языком, который поддерживает REM в качестве разделителя комментариев, где эти три буквы не являются первыми символами команды в данной строке (см. @REM в пакетных файлах)
jcolebrand
@jcolebrand Действительно.
Ли Риффель
2

REM поддерживается благодаря способу комментирования файлов MS BATCH, и этот инструмент используется в средах автоматизации.

- поддерживается за счет того, что является частью стандарта SQL. ( http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt стр. 83 см. <comment introducer> ::= <minus sign><minus sign>[<minus sign>...])

Jcolebrand
источник
0

Нет, не должно быть никакой разницы.

mrdenny
источник
1
Почему тогда два стиля комментариев?
Лазер
@Lazer: обратная совместимость, которую я ожидаю
Gaius
1
Я считаю, что REM действителен только для инструмента SQLPlus, в то время как - и / ** / происходят от языка, они работают также в MS SQL - TSQL, например.
Мариан