Использование переменных связывания в хранимой процедуре PL / SQL - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь написать хранимую процедуру в Oracle, используя следующие операторы:

create or replace PROCEDURE UPD_INBOX 
    (tbl_inbox in VARCHAR2, tbl_rjc OUT VARCHAR2) 
AS    
    CURSOR c1 IS
         select I.ROWID_IN, R.DESC || '-' || J.TIPO || ';' RECHAZO_DESC
           from DV.INBOX I, DV.REJECT R, DV.TIPO_RECHAZO J 
           where I.rowid_in = R.rowid_in
           and R.TIPO_R=J.TIPO_R;
       cRec c1%ROWTYPE;
    BEGIN
         UPDATE DV.INBOX set zError=0,zErrorDescription='';
         commit;
         OPEN c1;
         LOOP
            FETCH c1 INTO cRec;
            EXIT WHEN c1%NOTFOUND;
            UPDATE DV.INBOX SET ERROR=ERROR+1, Error_Desc=Error_Desc || cRec.REJTXT WHERE ROWID_IN=cRec.ROWID_IN;
         END LOOP;
       COMMIT;
      CLOSE c1;
END;

Но у меня возникает ошибка при компиляции:

:tbl_inbox и :tbl_rcj arenне распознаются как допустимые таблицы и имеют ошибку «PL 00049 Bad bind variable».Можно ли сделать это правильно?

Я попытался заменить предложение FROM на:

from :tbl_inbox I, :tbl_reject R, DV.TIPO_RECHAZO J

Но есть ошибка:

Error(7,5): PL/SQL: SQL Statement ignored
Error(9,8): PL/SQL: ORA-00942: table or view does not exist

Редактировать: Я публикую свой веськод и работает хорошо.Я просто пытаюсь установить в качестве параметра имя таблицы, которую я собирался использовать при каждом вызове процедуры.Они не будут такими же.

...