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