我试图在apex_t_numbers
查询中使用来自SELECT
集合的值作为WITH
子查询:
atn_cur_ids := apex_string.split_numbers(arg_v_ids, ':');
-- So if arg_v_ids := '1:2:3', then atn_cur_ids := apex_t_numbers(1, 2, 3)
with t_cur_ids as (
select * as id from table(atn_cur_ids);
)
select text from t_texts
join t_cur_ids on t_texts.id = t_cur_ids.id
这就是问题 - apex_t_numbers
是number
的表,而不是带有命名字段的record
类型。即使Oracle只有一个“匿名”列,Oracle SQL也不允许为*
提供别名。
可能的解决方案可能是两者兼有的功能
*
和但我知道只有一个可以得到一个*
并返回一些东西 - count(*)
,它不符合第二个要求。
好的,找到了解决方案。它可以用column_value
作为列的名称来完成:
with t_cur_ids as (
select column_value as id from table(atn_cur_ids);
)
select text from t_texts
join t_cur_ids on t_texts.id = t_cur_ids.id