Как устранить ошибку при выполнении процедуры в Oracle PL / SQL - PullRequest
0 голосов
/ 02 марта 2020

Только что начал с вопроса о процедурах в PL / SQL Oracle, и я представляю проблему во время ее выполнения, это указывает на ошибку 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 Ответ

1 голос
/ 02 марта 2020
  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;  
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...