如何解决Oracle PL/SQL中执行过程出错的问题



PL/SQLOracle中的过程问题开始,我在执行时遇到了问题,这表明错误ORA-00984

以下是我执行的程序代码

create or replace PROCEDURE P_FILEUPLOAD_XML IS
BEGIN 
INSERT INTO SPRCMNT (
SPRCMNT_CMTT_CODE,
SPRCMNT_TEXT,
SPRCMNT_TEXT_NAR)
VALUES(P_CMTT_CODE,
P_TEXT,
P_TEXT_NAR); 
EXCEPTION WHEN OTHERS THEN    
COMMIT;
END;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error:' || SQLERRM);       
DBMS_LOB.CLOSE(l_loc);
--dbms_output.put_line('P_RET_VAL:' || P_RET_VAL);    
END;

这是保存我的程序时的错误

PL/SQL: ORA-00984: column not allowed here

我不知道我是否遗漏了任何变量声明或其他内容,正如我所说,我只是从程序问题开始,并请求您的帮助。

  1. 您可以使用此方法插入到表中。在程序中分配变量的位置

    create or replace PROCEDURE P_FILEUPLOAD_XML AS
    -- Declare the Variables
    P_CMTT_CODE VARCHAR2(200);
    P_TEXT VARCHAR2(200);
    P_TEXT_NAR VARCHAR2(200);
    BEGIN 
    -- Set variables with a value
    P_CMTT_CODE := 'VALUE 1';
    P_TEXT      := 'VALUE 2';
    P_TEXT_NAR  := 'VALUE 3';
    -- Insert into table
    INSERT INTO SPRCMNT
    ( SPRCMNT_CMTT_CODE,
    SPRCMNT_TEXT,
    SPRCMNT_TEXT_NAR )
    VALUES  
    ( P_CMTT_CODE,
    P_TEXT,
    P_TEXT_NAR );
    
    EXCEPTION
    -- Catch error and log result
    WHEN OTHERS THEN
    dbms_output.put_line('Error:' || SQLERRM);           
    END;
    
  2. 或者将变量传递到过程中。两者都将获得相同的结果

    create or replace PROCEDURE P_FILEUPLOAD_XML(P_CMTT_CODE VARCHAR2,P_TEXT VARCHAR2, P_TEXT_NAR VARCHAR2)   AS
    
    BEGIN        
    -- Insert into table
    INSERT INTO SPRCMNT
    ( SPRCMNT_CMTT_CODE,
    SPRCMNT_TEXT,
    SPRCMNT_TEXT_NAR )
    VALUES  
    ( P_CMTT_CODE,
    P_TEXT,
    P_TEXT_NAR );
    
    EXCEPTION
    -- Catch error and log result
    WHEN OTHERS THEN
    dbms_output.put_line('Error:' || SQLERRM);           
    END;
    

    --如何运行程序

    BEGIN
    P_FILEUPLOAD_XML('VALUE1' , 'VALUE2', 'VALUE3');
    END;  
    

最新更新