CREATE TYPEの後にSQL * PLUSにスラッシュが必要なのはなぜですか?


14

Typeを定義してTOADでテストしただけで問題はありませんでしたが、すべて問題ありませんでした。しかし、SQL * PLUSで実行するとエラーがスローされました。

例:

CREATE OR REPLACE TYPE MyType AS OBJECT (
    Item1 NUMBER,
    Item2 NUMBER
);

何らかの理由でここにスラッシュを追加する必要があります

CREATE OR REPLACE TYPE MyType AS OBJECT (
    Item1 NUMBER,
    Item2 NUMBER
);
/

私にとっては、スラッシュを必要としないCreate Tableステートメントに似ています。かなり分かりにくいと思います。私はそれがどのように機能するか知っいますが、この設計決定が下された理由を誰でも説明できますか?



2
なぜそこで答えられないのという質問はありません。これは、sql * plusチームの任意の設計決定のようです。
bernd_k

素晴らしい答えがあります:stackoverflow.com/a/10207695/1568658
Eric Wang

回答:


15

/SQL * PlusのPL / SQLブロックの後が必要です。

SQL> begin
  2     null;
  3  end;
  4  -- here you need a /
  5  /

PL/SQL procedure successfully completed

これは、SQL * Plusが文(中間、非終了を含む可能性があります)が完了したことを認識するためです;

SQLタイプにはPL / SQLコードが含まれる場合があるため、SQL * Plusの開発者は/、CREATE TYPEの後にすべての場合に必要になると判断しました。

SQL> CREATE OR REPLACE TYPE t AS OBJECT (
  2     x NUMBER,
  3     MEMBER PROCEDURE setx(p_x NUMBER)
  4  );
  5  /

Type created

SQL> CREATE OR REPLACE TYPE BODY t AS
  2     MEMBER PROCEDURE setx (p_x NUMBER) IS
  3     BEGIN
  4        x := p_x;
  5     END;
  6  END;
  7  /

Type body created

/プロシージャ、パッケージ、またはパッケージ本体を定義した後も必要です(同じ理由で)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.