Pourquoi SQL * PLUS a-t-il besoin d'une barre oblique après CREATE TYPE?


14

J'ai juste eu le problème de définir un type et de le tester dans TOAD et tout allait bien. Mais fonctionnant sous SQL * PLUS, il a généré une erreur.

Exemple:

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

Pour une raison quelconque, je dois ajouter une barre oblique ici

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

Pour moi, cela ressemble à une instruction Create Table, qui ne nécessite pas de barre oblique. Je trouve cela assez déroutant. Je sais comment cela fonctionne, mais quelqu'un peut-il expliquer pourquoi cette décision de conception a été prise?



2
Pas de question Pourquoi n'y est-il pas répondu. Cela semble être une décision de conception arbitraire de l'équipe sql * plus.
bernd_k

Il y a une excellente réponse: stackoverflow.com/a/10207695/1568658
Eric Wang

Réponses:


15

vous avez besoin d'un /après un bloc PL / SQL dans SQL * Plus:

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

PL/SQL procedure successfully completed

C'est ainsi que SQL * Plus sait que vous en avez terminé avec votre instruction (qui peut inclure des éléments intermédiaires sans terminaison ;).

Les types SQL peuvent inclure du code PL / SQL, par conséquent, les développeurs SQL * Plus ont décidé que vous avez besoin d'un /dans tous les cas après un 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

Remarque : vous avez également besoin d'un /après avoir défini une procédure, un package ou un corps de package (pour la même raison).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.