将 SELECT 结果传递给 PL/SQL 函数,该函数需要嵌套 table 作为参数
Pass SELECT result to a PL/SQL function, that requires nested table as parameter
所以我有一个类型:
create or replace TYPE t_text IS TABLE OF VARCHAR2(200)
还有一个函数,它使用 t_text 类型作为输入值,但是这个
function(
(SELECT CAST(MULTISET(SELECT column_name FROM table_name) AS T_TEXT) FROM DUAL)
)
工作不正常。之前无法创建集合,因为这个函数是在视图中使用的。有什么解决方法吗?
编辑: 实际上,准确的问题是在
select multiple_replace(
'text',
CAST(MULTISET(SELECT column_name1 FROM table_name) AS T_TEXT),
CAST(MULTISET(SELECT column_name2 FROM table_name) AS T_TEXT)
) A from dual;
两个集合中的元素与 table 中的元素顺序不同。所以结果不同于使用 bulk collect 创建集合,我不能将其用于视图。
怎么样:
SELECT function(CAST(MULTISET(SELECT column_name FROM table_name) AS T_TEXT))
FROM DUAL
好吧,就这么简单
select multiple_replace(
'text',
CAST(MULTISET(SELECT column_name1 FROM table_name ORDER BY id) AS T_TEXT),
CAST(MULTISET(SELECT column_name2 FROM table_name ORDER BY id) AS T_TEXT)
) A from dual;
所以我有一个类型:
create or replace TYPE t_text IS TABLE OF VARCHAR2(200)
还有一个函数,它使用 t_text 类型作为输入值,但是这个
function(
(SELECT CAST(MULTISET(SELECT column_name FROM table_name) AS T_TEXT) FROM DUAL)
)
工作不正常。之前无法创建集合,因为这个函数是在视图中使用的。有什么解决方法吗?
编辑: 实际上,准确的问题是在
select multiple_replace(
'text',
CAST(MULTISET(SELECT column_name1 FROM table_name) AS T_TEXT),
CAST(MULTISET(SELECT column_name2 FROM table_name) AS T_TEXT)
) A from dual;
两个集合中的元素与 table 中的元素顺序不同。所以结果不同于使用 bulk collect 创建集合,我不能将其用于视图。
怎么样:
SELECT function(CAST(MULTISET(SELECT column_name FROM table_name) AS T_TEXT))
FROM DUAL
好吧,就这么简单
select multiple_replace(
'text',
CAST(MULTISET(SELECT column_name1 FROM table_name ORDER BY id) AS T_TEXT),
CAST(MULTISET(SELECT column_name2 FROM table_name ORDER BY id) AS T_TEXT)
) A from dual;