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;