首页 文章

(语句被忽略)和(缺少表达式)错误

提问于
浏览
0

我是数据库世界的初学者,我的任务是编写一个在嵌套表中添加记录的过程,这是我写的.sql文件:

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;
    /

当我运行.sql文件时,我收到一条警告消息(使用编译错误创建过程 . )当我运行时(显示错误过程TT1_AJOUTE_PERSON_DANS_ALBUM;)我得到错误(语句被忽略)和(缺少表达式)

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

我已经用谷歌搜索过这个问题,而且大多数时候都是因为一个错字而发生的事情,但我不认为这是我的情况!这些是表格(TT1_Album)和(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)

1 回答

  • 0

    se这个语法的插入:

    INSERT INTO table
    (column1, column2, ... column_n )
    SELECT expression1, expression2, ... expression_n
    FROM source_table
    [WHERE conditions];
    

    为你的例子:

    INSERT INTO TT1_Album (personnages, num)
    SELECT REF(p), numAlbum           
    FROM TT1_personnage p
    WHERE p.num = numPersonnage;
    

相关问题