gpt4 book ai didi

sql - SQL 语句中不允许的本地集合类型

转载 作者:行者123 更新时间:2023-12-04 22:07:20 25 4
gpt4 key购买 nike

我有一个关于在 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 , timestamp_num NUMBER,pValue NUMBER);
TYPE type_table_2 IS TABLE OF type_record_2;
END test;

问题出在 functions_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, timestamp_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 , timestamp_num , pValue)
BULK COLLECT INTO table_2 FROM (
SELECT id_num
, timestamp_num
, value as pValue
FROM table(table_1) -- ERROR IS HERE
);

RETURN table_2;
END function_2;

最佳答案

要实现这一点,您应该使用类似的东西:

创建或替换类型 type_record_1.../

创建或替换 TYPE type_table_1 AS TABLE OF type_record_1;/

Oracle 不允许将包中声明的类型转换为表。我直到 11 点才谈论 Oracle,仍然没有检查 12c 的新特性:(。

关于sql - SQL 语句中不允许的本地集合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com