【发布时间】:2022-12-04 23:14:27
【问题描述】:
我有一个包含以下过程的包: `
PROCEDURE PRC_DO_ISCRIZIONE( P_ID_STUD IN NUMBER, P_ID_CORSO IN NUMBER)
IS
V_ID_CORSO NUMBER := NULL;
V_ID_STUD NUMBER := NULL;
V_NEXT_ID NUMBER := NULL;
EX_NO_STUD EXCEPTION;
EX_NO_CORSO EXCEPTION;
CURSOR C_LISTA_CORSI IS ( SELECT ID FROM CORSO);
CURSOR C_LISTA_STUD IS ( SELECT ID FROM STUDENTE);
BEGIN
SELECT MAX(ID) +1
INTO V_NEXT_ID
FROM ISCRIZIONE;
FOR S IN C_LISTA_STUD
LOOP
IF P_ID_STUD != S.ID
THEN RAISE EX_NO_STUD;
END IF;
END LOOP;
FOR C IN C_LISTA_CORSI
LOOP
IF P_ID_CORSO != C.ID
THEN RAISE EX_NO_CORSO;
END IF;
END LOOP;
SELECT ID
INTO V_ID_CORSO
FROM CORSO
WHERE ID = P_ID_CORSO;
SELECT ID
INTO V_ID_STUD
FROM STUDENTE
WHERE ID = P_ID_STUD;
INSERT INTO ISCRIZIONE(ID, ID_CORSO, ID_STUDENTE, DATA)
VALUES ( V_NEXT_ID , V_ID_CORSO, V_ID_STUDENTE, SYSDATE);
EXCEPTION
WHEN EX_NO_STUD
THEN DBMS_OUTPUT.PUT_LINE('NESSUNO STUDENTE CORRISPONDE ALL''ID INSERITO');
RETURN;
WHEN EX_NO_CORSO
THEN DBMS_OUTPUT.PUT_LINE('NESSUN CORSO CORRISPONDENTE ALL''ID INSERITO');
RETURN;
END PRC_DO_ISCRIZIONE;
` 但是当我启动 create package body 时,出现错误 ora-00984: column not allowed in this case
目标是给定一个学生 ID 和一个课程 ID,如果它们存在于它们的相关表中,则该过程向 ENROLLMENT(Iscrizione) 表添加一行包含学生 ID、课程 ID 和日期
【问题讨论】: