こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

oracle pl/sql のコマンド終端子は「;」?「/」?

oracleのsqlを書くときにコマンドの終わりに
「;」を書きますか?
「/」を書きますか?

例えば

===== sample1.sql =====
CREATE TABLE TB1 (IT1 VARCHAR(1))
;
COMMENT ON TABLE TB1 IS 'TB1のコメント'
;
===== sample1.sql =====

でも

===== sample2.sql =====
CREATE TABLE TB1 (IT1 VARCHAR(1))
/
COMMENT ON TABLE TB1 IS 'TB1のコメント'
/
===== sample2.sql =====

でも、同じ動きをしますが、どちらを使いますか?

すべて「;」
すべて「/」
使い分けがある。
どちらでも良いが統一するに越したことはない。

好き嫌いのアンケートではありません。

人に聞かれた時に説明できる理由が欲しいです。

以上、よろしくおねがいします。

投稿日時 - 2007-03-30 15:53:38

QNo.2879535

暇なときに回答ください

質問者が選んだベストアンサー

SQL文の終端は「;」です。
「/」は、
SQLバッファ内のSQL文を実行する
という意味です。

たとえば、
SQL*PLUSを実行した直後に
SQL> /[Return]
とするとエラーになるはずです。
「;」の場合は、エラーになりません。
また、

SQL> SELECT SYSDATE FROM DUAL[Return]
SQL> ;[Return]
SQL> /[Return]


SQL> SELECT SYSDATE FROM DUAL[Return]
SQL> /[Return]
SQL> ;[Return]

の動作の違いも確認してみてください。

投稿日時 - 2007-03-30 16:30:02

補足

なるほど、
そうした場合、上記の例なら
sample1.sql
sample2.sql
どちらで記述するのが正解ですか?
あるいは

===== sample3.sql =====
CREATE TABLE TB1 (IT1 VARCHAR(1))
/
;

COMMENT ON TABLE TB1 IS 'TB1のコメント'
/
;
===== sample3.sql =====

が正解ですか?

投稿日時 - 2007-03-30 16:33:48

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

どちらでも構いません。
なお、私なら、下記のように書きます。
===== sample3.sql =====
CREATE TABLE TB1 (IT1 VARCHAR(1));
COMMENT ON TABLE TB1 IS 'TB1のコメント';

セミコロンの場合は、
このように1行で書けますが、
「/」では書けません。

また、ストアドプロシージャを書けば判りますが、
 CREATE PROCEDURE 名前 IS
  ~省略~;
 BEGIN
~省略~
 END;
 /
こういうのは「;」「/」の使い分けが必要です。

投稿日時 - 2007-03-30 16:52:46

あなたにオススメの質問