Чи є різниця між Rem та - коментарями для SQL * Plus?


13

У запиті SQL * Plus обидва Remта --кваліфікуються як індикатори коментарів:

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

Чи взагалі є якась різниця між двома методами коментування?


1
І не забувайте / * коментар * / теж дійсний.
Гай

Відповіді:


18

Різниця полягає в тому, що --і /* */може бути використана в блоці 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 як роздільник коментарів, де ці три літери не є першими командними символами в заданому рядку (cf @REM у пакетних файлах)
jcolebrand

@jcolebrand Дійсно.
Лей Ріффер

2

REM підтримується завдяки тому, що коментуються файли MS BATCH, і цей інструмент використовується в середовищах автоматизації.

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


0

Ні, різниці взагалі не повинно бути.


1
Чому тоді два стилі коментарів?
Лазер

@Lazer: зворотна сумісність, яку я очікую
Gaius

1
Я вважаю, що REM діє лише для інструменту SQLPlus, тоді як - і / ** / походять з мови, вони працюють також у MS SQL - TSQL, наприклад.
Мар'ян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.