Присвойте псевдоним анонимному столбцу глобального типа коллекции в SELECT FROM TABLE (коллекция) - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь использовать значения из коллекции 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 SQL не позволяет присваивать псевдонимы *, даже если он имеет только один «анонимный» столбец.

Возможным решением может быть функция, которая

  1. получает * и
  2. возвращает значение на строку

Но яЯ знаю только одно, которое может получить * и вернуть что-то - count(*), и это не соответствует второму требованию.

1 Ответ

1 голос
/ 12 марта 2019

Хорошо, нашел решение.Это можно сделать с 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
...