我正在尝试使用以下语句在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
无法识别为有效表,并且错误为“ PL 00049错误的绑定变量”。可以正确做到这一点吗?
我尝试用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
编辑:我发布了整个代码,并且运行良好。我只是想将要使用每个过程调用的表的名称设置为参数。他们不会是一样的。