Comment créer un type Oracle qui fait référence aux colonnes de table pour le type de données?
Je suis en train de définir un type
en utilisant le code suivant.
CREATE OR REPLACE TYPE MY_TYPE AS OBJECT (
app_id some_table_name.app_id%type
);
Si je l'exécute, j'obtiens l'erreur.
Error(4,32): PLS-00201: identifier 'some_table_name.app_id' must be declared
Ce qui est mal à cela?
source d'informationauteur AppleGrew
Vous devez vous connecter pour publier un commentaire.
Quel est le problème avec cela est que
%type
est PL/SQL syntaxe. Il n'est pas pris en charge dans SQL.Je suis d'accord que c'est une honte, et ce serait vraiment bien si on pouvait référence colonnes de la table dans les déclarations de type de ce genre. Malheureusement Oracle ont ralenti les changements à leur mise en œuvre au cours des deux dernières versions, je pense donc qu'il est peu probable que cela change dans un avenir proche.
Ce que je vraiment comme de voir, c'est le support d'Oracle cette syntaxe:
Objets dynamiques pour les interfaces: comment cool serait-elle?
Vous ne pouvez pas utiliser
some_table_name.app_id%type
lors de la déclaration d'un type dans la base de données, pas plus que vous pouvez faire ceci:Vous devez utiliser un type comme NOMBRE, VARCHAR2(10) ou un type défini par l'utilisateur tels que
mytype