プライマリ・コンテンツに移動
SQL*Plus®ユーザーズ・ガイドおよびリファレンス
リリース1 (12.1)
B71396-03
目次へ移動
目次
索引へ移動
索引

前
次

スクリプトへのコメントの挿入について

スクリプトにコメントを入力するには、次の3つの方法があります。

REMARKコマンドの使用方法

REMARKコマンドのみの行をスクリプト内に指定し、同じ行にコメントを続けます。コメントを次の行に継続するには、追加のREMARKコマンドを入力します。REMARKコマンドは、1つのSQLコマンドの行と行の間には挿入しないでください。

REMARK Commission Report;
REMARK to be run monthly.;
COLUMN LAST_NAME HEADING 'LAST_NAME';
COLUMN SALARY HEADING 'MONTHLY SALARY' FORMAT $99,999;
COLUMN COMMISSION_PCT HEADING 'COMMISSION %' FORMAT 90.90;
REMARK Includes only salesmen;
SELECT LAST_NAME, SALARY, COMMISSION_PCT
FROM EMP_DETAILS_VIEW
WHERE JOB_ID='SA_MAN';

/*...*/の使用方法

SQLのコメント・デリミタ(/*...*/)は、スクリプト内の個別の行に入力するか、SQLコマンドと同じ行に入力するか、またはPL/SQLブロック内の行に入力します。

コメントの初めのスラッシュとアスタリスク(/*)の後に空白を入力する必要があります。

コメントは、次のように複数の行にわたっていてもかまいませんが、コメント内にコメントをネストさせることはできません。

/* Commission Report
 to be run monthly. */
COLUMN LAST_NAME HEADING 'LAST_NAME';
COLUMN SALARY HEADING 'MONTHLY SALARY' FORMAT $99,999;
COLUMN COMMISSION_PCT HEADING 'COMMISSION %' FORMAT 90.90;
REMARK Includes only salesmen;
SELECT LAST_NAME, SALARY, COMMISSION_PCT
FROM EMP_DETAILS_VIEW
/* Include only salesmen.*/
WHERE JOB_ID='SA_MAN'; 

- -の使用方法

SQL文、PL/SQLブロックまたはSQL*Plusコマンドの中で、ANSI/ISOの「- -」スタイルのコメントを使用できます。終了デリミタがないため、複数行にわたるコメントは入力できません。

PL/SQLおよびSQLの場合、次のように、ある行のコマンドの後にコメントを入力するか、コメントのみの行を入力します。

-- Commissions report to be run monthly
DECLARE --block for reporting monthly sales

SQL*Plusコマンドでは、行全体をコメントに指定する場合のみ、「- -」を使用してコメントを挿入できます。たとえば、次のコメントは有効です。

-- set maximum width for LONG to 777
SET LONG 777

次のコメントは無効です。

SET LONG 777 -- set maximum width for LONG to 777

次のSQL*Plusコマンドを入力した場合、このコマンドはコメントとして解釈され、実行されません。

-- SET LONG 777

コメント挿入時の注意

SQL*Plusには、SQLコマンドまたはPL/SQLコマンドの解析機能はありません。新しい文のそれぞれについて、先頭から数個のキーワードがスキャンされ、SQL、PL/SQLまたはSQL*Plusのいずれのコマンドであるかが判断されます。コメントの挿入箇所によっては、SQL*Plusでコマンドが正しく認識されず、予期しない結果になる場合があります。次に、SQL*Plusのコメントを効果的に使用する方法を示します。

  1. 文の先頭から数個のキーワードには、コメントを挿入しないでください。次に例を示します。

    CREATE OR REPLACE
      2  /* HELLO */
      3  PROCEDURE HELLO AS
      4  BEGIN
      5  DBMS_OUTPUT.PUT_LINE('HELLO');
      6  END;
      7  /
    
    Warning: Procedure created with compilation errors.

    例に示す位置にコメントを挿入すると、コマンドがコマンドとして認識されません。コメントの最初にあるスラッシュ(/)が文の終了記号と解釈され、SQL*PlusからサーバーにPL/SQLブロックが送信されます。コメントを移動して、このエラーを回避します。次に例を示します。

     CREATE OR REPLACE PROCEDURE
      2  /* HELLO */
      3  HELLO AS
      4  BEGIN
      5  DBMS_OUTPUT.PUT_LINE('HELLO');
      6  END;
      7  /
    
    Procedure created.
  2. 文の終了記号(ピリオド、セミコロンまたはスラッシュ)の後に、コメントを挿入しないでください。たとえば、次のように入力したとします。

    SELECT 'Y' FROM DUAL; -- TESTING

    次のエラーが戻されます。

    SELECT 'Y' FROM DUAL; -- TESTING
                        *
    ERROR at line 1:
    ORA-00911: invalid character

    SQL*Plusでは、文の終了記号の後でテキストを記述することはできないため、コマンドは処理されません。

  3. コメント行の終わり、またはSQL文またはPL/SQLブロック内のコメントの後に文の終了文字を挿入しないでください。たとえば、次のように入力したとします。

    SELECT *
    -- COMMENT;

    次のエラーが戻されます。

    -- COMMENT
             *
    ERROR at line 2:
    ORA-00923: FROM keyword not found where expected

    セミコロンは文の終了記号として解釈されるため、不完全なSQLコマンドがSQL*Plusからサーバーに送信されて処理されるため、エラーになります。

  4. SQL文またはPL/SQLブロックでは、コメントにアンパサンド(&)を使用しないでください。たとえば、次のようにスクリプトを入力したとします。

    SELECT REGION_NAME, CITY
    /* THIS & THAT */
    FROM EMP_DETAILS_VIEW
    WHERE SALARY>12000;

    SQL*Plusでは、アンパサンド(&)の後のテキストは置換変数として解釈されるため、この例では、変数&thatの値を求めるプロンプトが表示されます。

    Enter value for that: 
    old   2: /* THIS & THAT */
    new   2: /* THIS  */
    
    REGION_NAME               CITY
    ------------------------- ------------------------------
    Americas                  Seattle
    Americas                  Seattle
    Americas                  Seattle
    Europe                    Oxford
    Europe                    Oxford
    Americas                  Toronto
    6 rows selected.

    SET DEFINE OFFを使用して、置換文字をスキャンしないように設定できます。

置換文字および終了文字の詳細は、「SET」コマンドのDEFINE、SQLTERMINATORおよびSQLBLANKLINESを参照してください。