В Oracle я иногда хотел бы создавать такие конструкции, как эти
SELECT * FROM TABLE(STRINGS('a', 'b', 'c'))
SELECT * FROM TABLE(NUMBERS(1, 2, 3))
Очевидно, я могу объявить свои собственные типы для вышеперечисленного.Я могу выбирать между TABLE
и 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 "анонимный" TABLE
/ VARRAY
типы, доступные в любом экземпляре Oracle?Аналогично простым ARRAY
типам Postgres / H2 / HSQLDB?
UPDATE : я в основном запускаю этот SQL из Java, если это уместно.Мне не нужно объяснять PL / SQL, я просто ищу анонимные типы массивов SQL (т.е. «анонимные» автономные хранимые типы ).Если они вообще не существуют, ответ будет NO