Ich bin ein Anfänger in Datenbanken Welt, meine Aufgabe war es, eine Prozedur, die einen Datensatz in einer geschachtelten Tabelle, das ist die .SQL-Datei schrieb ich schrieb:(Anweisung ignoriert) und (fehlende Ausdruck) Fehler
CREATE OR REPLACE PROCEDURE TT1_AJOUTE_PERSON_DANS_ALBUM ( numPersonnage IN NUMBER, numAlbum IN NUMBER ) IS tmpPersonnages TT1_personnages_ntab_type; BEGIN SELECT personnages INTO tmpPersonnages FROM TT1_Album WHERE (num = numAlbum); -- si la table imbriqué 'nested table' personnes est NULL on la crée IF tmpPersonnages IS NULL THEN UPDATE TT1_Album SET personnages = NEW TT1_personnages_ntab_type() WHERE (num = numAlbum); END IF; -- on va ajouter dans la tableau imbriqué 'nested table' (personnages) -- de la table des albums (TT1_Album) -- identifié par le numéro d'album passé en paramétre INSERT INTO TABLE ( SELECT a.personnages FROM TT1_Album a WHERE (a.num = numAlbum) ) VALUES ( -- appel du constructeur -- on utilise REF() pour récupérer l'OID de la ligne sélectionée -- de la table des personnages (TT1_personnage) -- le personnage est identifié par le numéro de personne passé en paramétre SELECT REF(p) FROM TT1_personnage p WHERE (p.num = numPersonnage) ); END; /
, wenn ich die sQL-Datei ausführen erhalte ich eine Warnmeldung (Verfahren mit Kompilierungsfehlern erstellt.) und wenn ich laufen (show Fehler Prozedur TT1_AJOUTE_PERSON_DANS_ALBUM;) bekomme ich die Fehler (Anweisung ignoriert) und (fehlende Expression)
Errors for PROCEDURE TT1_AJOUTE_PERSON_DANS_ALBUM: LINE/COL ERROR -------- ----------------------------------------------- 22/2 PL/SQL: SQL Statement ignored 31/3 PL/SQL: ORA-00936: missing expression
Ich habe bereits über dieses Problem gegoogelt und die meiste Zeit ist es passiert bec nach einem Tippfehler, aber ich denke nicht, dass es mein Fall ist! das sind die Beschreibungen der Tabellen (TT1_Album) und (TT1_personnage)
SQL> desc TT1_Album; Name Null? Type ----------------------------------------- -------- ------------------------- NUM NOT NULL NUMBER TITRE NOT NULL VARCHAR2(40) ANNEE NOT NULL NUMBER PERSONNAGES TT1_PERSONNAGES_NTAB_TYPE SQL> desc TT1_personnage; Name Null? Type ----------------------------------------- -------- ------------ NUM NOT NULL NUMBER NOM VARCHAR2(20) PRENOM VARCHAR2(20) PROFESSION VARCHAR2(20) SEXE CHAR(1) GENRE VARCHAR2(7)
Sie versuchen, einzufügen in eine SELECT-Anweisung. Sie müssen in eine Tabelle einfügen, und Sie sollten wahrscheinlich eine SELECT-Anweisung direkt hinter dem Namen der Tabelle und nicht eine VALUES() - Klausel verwenden. – grahamj42