只需尝试为我指定的ID获取光标.
CREATE OR REPLACE PACKAGE some_package AS TYPE t_cursor IS REF CURSOR; TYPE t_id_table IS TABLE OF NVARCHAR(38) INDEX BY PLS_INTEGER; PROCEDURE someentity_select( p_ids IN t_id_table,p_results OUT t_cursor); END; CREATE OR REPLACE PACKAGE BODY some_package AS PROCEDURE someentity_select( p_ids IN t_guid_table,p_results OUT t_cursor) IS BEGIN OPEN p_results FOR SELECT * FROM someschema.someentity WHERE id IN (SELECT column_value FROM TABLE(p_ids)); - fails here END; END;
注意:someschema.someentity.id是一个NVARCHAR2(38)
PL / sql:ORA-00382:表达式类型错误
PL / sql:ORA-22905:无法访问非嵌套表项的行
我哪里错了?
在12.2之前的Oracle版本中,您只能通过CREATE TYPE语句从数据库中定义的集合类型中进行SELECT,而不是关联数组:
CREATE TYPE t_id_table IS TABLE OF NVARCHAR(38); CREATE OR REPLACE PACKAGE some_package AS PROCEDURE someentity_select( p_ids IN t_guid_table,p_results OUT SYS_REFCURSOR); END; CREATE OR REPLACE PACKAGE BODY some_package AS PROCEDURE someentity_select( p_ids IN t_guid_table,p_results OUT SYS_REFCURSOR) IS BEGIN OPEN p_results FOR SELECT * FROM someschema.someentity WHERE id IN (SELECT column_value FROM TABLE(p_ids)); END; END;
原文地址:https://www.jb51.cc/oracle/205252.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。