将 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;