PLS-00642:SQL语句中不允许使用本地集合类型。我正在使用oracle datadase 12c

PLS-00642:SQL语句中不允许使用本地集合类型。我正在使用oracle datadase 12c,sql,oracle,Sql,Oracle,也许我遗漏了什么,但是——读你的评论,它看起来像一个简单的更新语句。你为什么要用这么复杂的方式来做 CREATE OR REPLACE PROCEDURE RDBSTAGE.ATCHMNT_ERR_FILEID AUTHID CURRENT_USER IS CURSOR cv_atchtab IS SELECT * FROM ATTACHMENT_ERROR; type ATCHMNT_ERR_nt is table of cv_atchtab%ROWTYPE; I_ATC

也许我遗漏了什么,但是——读你的评论,它看起来像一个简单的更新语句。你为什么要用这么复杂的方式来做

CREATE OR REPLACE PROCEDURE RDBSTAGE.ATCHMNT_ERR_FILEID AUTHID CURRENT_USER
IS
  CURSOR cv_atchtab IS
    SELECT * FROM ATTACHMENT_ERROR;

  type ATCHMNT_ERR_nt is table of cv_atchtab%ROWTYPE;
  I_ATCHMNT_ERR ATCHMNT_ERR_nt;

  type file_id_nt is table of VARCHAR2(40);
  V_FILE_ID file_id_nt;
BEGIN
  OPEN cv_atchtab;
  LOOP
    FETCH cv_atchtab BULK COLLECT INTO I_ATCHMNT_ERR;
    EXIT WHEN I_ATCHMNT_ERR.COUNT = 0; -- changed this

    FOR i IN 1..I_ATCHMNT_ERR.COUNT
    LOOP
      SELECT FILE_ID BULK COLLECT
      INTO V_FILE_ID
      FROM ATTACHMENT_CLAIM t1
      WHERE t1.CLAIM_TCN_ID = I_ATCHMNT_ERR(i).CLAIM_TCN_ID;

      UPDATE ATTACHMENT_ERROR t2
      SET FILE_ID = V_FILE_ID
      WHERE t2.CLAIM_TCN_ID = I_ATCHMNT_ERR(i).CLAIM_TCN_ID;  -- changed this
    END LOOP;

  END LOOP;    
  CLOSE cv_atchtab; 

END ATCHMNT_ERR_FILEID; 
/
Show ERRORS

我得到PLS-00642:SQL语句中不允许的本地集合类型运行在编解码器上时出错。请为您的问题提供更多上下文?比如你试图解决的问题,或者您实际想要实现什么?在附件\u错误表中有许多记录。我在附件\u错误表中添加了一个新的文件\u id列。并且需要从附件\u索赔表中更新文件\u id列,其中附件\u索赔。索赔\u tcn\u id=附件\u错误。索赔\u tcn\u id。在附件\u索赔表中已经有文件\u id字段。
update attachment_error a set
  a.file_id = (select c.file_id
               from attachment_claim c
               where c.claim_tcn_id = a.claim_tcn_id;