В Oracle я иногда хотел бы создавать конструкции, подобные этим
SELECT * FROM TABLE(STRINGS('a', 'b', 'c'))
SELECT * FROM TABLE(NUMBERS(1, 2, 3))
Очевидно, я могу объявить мои собственные типы для вышеупомянутого. Я могу выбирать между ТАБЛИЦА
и VARRAY
. Например:
CREATE TYPE STRINGS AS TABLE OF VARCHAR2(100);
CREATE TYPE NUMBERS AS VARRAY(100) OF NUMBER(10);
В этом конкретном случае другое решение - написать такие вещи, как
SELECT 'a' FROM DUAL UNION ALL
SELECT 'b' FROM DUAL UNION ALL
SELECT 'c' FROM DUAL
Но у меня могут быть более сложные примеры, где мне действительно понадобится тип TABLE
/ VARRAY
. Так что, если мой SQL работает в неизвестной системе, где я не могу создавать типы, потому что у меня может не быть необходимых грантов?
Итак, мой вопрос: Знает ли Oracle «анонимный» ТАБЛИЦА
/ Типы VARRAY
, доступные в любом экземпляре Oracle? Подобно простому типу ARRAY
Postgres / H2 / HSQLDB?
ОБНОВЛЕНИЕ : Я в основном запускаю этот SQL из Java, если это актуально. Нет необходимости объяснять мне PL / SQL, я просто ищу анонимные типы массивов SQL (т.е. «анонимные» автономные хранимые типы ). Если их вообще нет, ответ будет NO