我是数据库世界的初学者,我的任务是编写一个在嵌套表中添加记录的过程,这是我写的.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 回答
se这个语法的插入:
为你的例子: