Existe alguma diferença entre Rem e - comentários para SQL * Plus?

12

No prompt do SQL * Plus, ambos Reme se --qualificam como indicadores de comentários:

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

Existe alguma diferença entre as duas técnicas de comentários?

lazer
fonte
1
E não se esqueça / * comment * / também é válido.
Gaius

Respostas:

17

A diferença é que --e /* */pode ser usada em um bloco PL / SQL, enquanto REM[ARK]não pode. O seguinte funcionará no SQL * Plus:

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

Estes não irão:

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

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

A documentação 11.2 em todos os tipos de comentários possui mais informações. O básico é ...

Você pode inserir comentários em um script de três maneiras:

  • usando o comando SQL * Plus REMARK para comentários de linha única.

  • usando os delimitadores de comentários SQL / * ... * / para comentários de uma ou várias linhas.

  • usando comentários ANSI / ISO (Instituto Nacional Americano de Padrões / Organização Internacional de Padrões) - - para comentários de linha única.

A documentação também inclui notas em quatro locais em que os comentários não devem ser usados, mas não incluem outras diferenças.

Leigh Riffel
fonte
Para ser justo, eu nunca encontrei uma linguagem que suporta REM como um delimitador de comentário onde essas três letras não são os primeiros caracteres de comando em uma determinada linha (cf @REM em arquivos em lote)
jcolebrand
@jcolebrand De fato.
Leigh Riffel
2

O REM é suportado devido à maneira como os arquivos do MS BATCH são comentados e esta ferramenta está sendo usada com ambientes de automação.

- é suportado por fazer parte do padrão SQL. ( http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt página 83 cf <comment introducer> ::= <minus sign><minus sign>[<minus sign>...])

jcolebrand
fonte
0

Não, não deve haver nenhuma diferença.

mrdenny
fonte
1
Por que dois estilos de comentário, então?
Lazer
@Lazer: compatibilidade com versões anteriores, espero
Gaius
1
Acredito que o REM seja válido apenas para a ferramenta SQLPlus, enquanto - e / ** / são provenientes da linguagem, eles também funcionam no MS SQL - TSQL, por exemplo.
Marian