如何解决SQL语句中不允许使用本地集合类型
创建或替换类型type_record_1 … /
创建或替换TYPE type_table_1作为type of record_1的表;/
Oracle不允许将软件包中声明的类型强制转换为表。我谈论Oracle直到11,仍然不检查12c的新功能:(。
解决方法
我有一个关于在Oracle SQL函数中使用集合的问题。
包中有类型的定义:
/* Types of package*/
create or replace PACKAGE "test" AS
TYPE type_record_1 IS record ( id_num NUMBER,timestamp_num NUMBER,value NUMBER);
TYPE type_table_1 IS TABLE OF type_record_1;
TYPE type_record_2 IS record ( id_num NUMBER,pValue NUMBER);
TYPE type_table_2 IS TABLE OF type_record_2;
END test;
问题出在功能_2中。function_2使用来自function_1的输出。当我尝试在function_2中进行选择时,会出现错误消息。错误消息“
SQL语句中不允许使用本地集合类型”。
能否请你帮忙?在函数中使用集合有什么问题?
/*function 1*/
FUNCTION function_1
RETURN type_table_1
IS
table_1 type_table_1;
BEGIN
-- select values from
SELECT id_num,timestamp_num,value --type_record_1 (id_num,value)
BULK COLLECT INTO table_1
FROM (
SELECT
l.id_num,EXTRACT(hour from end_time) * 60 + EXTRACT(minute from end_time) as timestamp_num,l.value
FROM INTERVAL_F l
WHERE id_num IN (SELECT id_num FROM table_rev)
);
RETURN table_1;
END function_1;
/*function 2*/
FUNCTION function_2
(
table_1 IN type_table_1
)
RETURN type_table_2
IS
table_2 type_table_2;
BEGIN
SELECT type_record_2(id_num,pValue)
BULK COLLECT INTO table_2 FROM (
SELECT id_num,value as pValue
FROM table(table_1) -- ERROR IS HERE
);
RETURN table_2;
END function_2;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。