PLS-00382:填充以job_id为索引的关联数组时类型错误如何解决

错误原因
你定义的jobs_tab_type关联数组的元素类型为jobs%rowtype,对应jobs表的整行记录类型,但循环赋值时仅传入了rec.job_id单个varchar2类型的字段,二者类型不匹配,因此触发PLS-00382: expression is of wrong type报错。
修复代码
如果你需要将jobs表的整行数据存入关联数组(匹配你“存储表中所有数据”的需求),直接将整行记录赋值给数组元素即可:
DECLARE TYPE jobs_tab_type IS TABLE OF jobs%rowtype INDEX BY jobs.job_id%type; jobstab jobs_tab_type; BEGIN FOR rec IN (SELECT * FROM jobs) LOOP jobstab(rec.job_id) := rec; END LOOP; END; /
如果你仅需要存储job_id字段值,可以调整关联数组的元素类型为jobs.job_id%type:
DECLARE TYPE jobs_tab_type IS TABLE OF jobs.job_id%type INDEX BY jobs.job_id%type; jobstab jobs_tab_type; BEGIN FOR rec IN (SELECT * FROM jobs) LOOP jobstab(rec.job_id) := rec.job_id; END LOOP; END; /
内容的提问来源于stack exchange,提问作者Elijah Leis
相关产品推荐
相关产品推荐

