在存储过程PL / SQL中使用绑定变量

时间:2019-03-05 07:33:58

标签: oracle stored-procedures plsql

我正在尝试使用以下语句在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

编辑:我发布了整个代码,并且运行良好。我只是想将要使用每个过程调用的表的名称设置为参数。他们不会是一样的。

0 个答案:

没有答案