使用Bulk Collect时出现PLS-00597类型错误,求解决方法
解决Bulk Collect的PLS-00597类型不匹配错误
错误原因
你定义的cl_emp_rec是嵌套记录类型type_emp_rec的集合,而type_emp_rec内部又包裹了一个emp_det%rowtype字段。但select * from emp_det返回的每一行是直接的emp_det%rowtype类型,和type_emp_rec类型不兼容,这就导致了PLS-00597类型不匹配错误。
解决方法
方案1:简化类型定义(推荐)
直接把表类型定义为emp_det%rowtype的集合,不需要额外嵌套记录,这样和查询返回的类型完全匹配:
declare type cl_emp_rec is table of emp_det%rowtype; emp_rec cl_emp_rec; begin select * bulk collect into emp_rec from emp_det; end; /
方案2:保留嵌套记录类型(按需使用)
如果业务上确实需要使用你定义的嵌套记录结构,那么在查询时要显式构造type_emp_rec对象,将查询结果赋值到嵌套的v_emp_rec字段中:
declare type type_emp_rec is record ( v_emp_rec emp_det%rowtype ); type cl_emp_rec is table of type_emp_rec; emp_rec cl_emp_rec; begin select type_emp_rec(emp_det.*) bulk collect into emp_rec from emp_det; end; /
内容的提问来源于stack exchange,提问作者Sunny
相关产品推荐
相关产品推荐

