内容阅读
在知识库中专注阅读,并随时返回相关工具与课程
ORA-06504常见PL/SQL
PL/SQL:结果集变量或查询的返回类型不匹配
PL/SQL: Return types of Result Set variables or query do not match
错误描述
REF CURSOR 变量的返回类型与查询实际返回的列不匹配。在从强类型 REF CURSOR 获取数据时会在运行时发生此错误。
可能原因
- 强类型 REF CURSOR 返回类型与 SELECT 列列表不匹配
- 查询已修改但游标记录类型未更新
- 游标类型定义后列数据类型发生变化
解决方案
- 1确保 REF CURSOR 记录类型与查询列完全匹配
- 2使用 SYS_REFCURSOR(弱类型)代替强类型 REF CURSOR
- 3修改底层表结构后重新编译包
诊断命令
SELECT object_name, object_type, status FROM dba_objects WHERE status = 'INVALID' AND object_type IN ('PACKAGE','PACKAGE BODY');SELECT text FROM dba_source WHERE name = 'PACKAGE_NAME' AND type = 'PACKAGE' ORDER BY line;#plsql#ref-cursor#type-mismatch#result-set