【问题标题】:PL-SQL I'm trying to use a variable value into an Insert Into - ERROR ORA-00984PL-SQL 我正在尝试将变量值用于 Insert Into - ERROR ORA-00984
【发布时间】: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 和日期

【问题讨论】:

    标签: oracle plsql ora-00984


    【解决方案1】:

    您的错误来源似乎是 INSERT 语句的 VALUES 子句中的标识符 V_ID_STUDENTE

    您没有名为V_ID_STUDENTE 的局部变量,但您有一个名为V_ID_STUD 的局部变量。尝试用 V_ID_STUD 替换 V_ID_STUDENTE

    【讨论】:

      猜你喜欢
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      相关资源
      最近更新 更多