在Oracle中,我有时会想要创建这些构造
SELECT * FROM TABLE(STRINGS('a', 'b', 'c'))
SELECT * FROM TABLE(NUMBERS(1, 2, 3))
Run Code Online (Sandbox Code Playgroud)
显然,我可以为上述声明我自己的类型.我可以选择TABLE和VARRAY.例如:
CREATE TYPE STRINGS AS TABLE OF VARCHAR2(100);
CREATE TYPE NUMBERS AS VARRAY(100) OF NUMBER(10);
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,另一种解决方案是编写类似的东西
SELECT 'a' FROM DUAL UNION ALL
SELECT 'b' FROM DUAL UNION ALL
SELECT 'c' FROM DUAL
Run Code Online (Sandbox Code Playgroud)
但是我可能有更复杂的例子,我真的需要一个TABLE/ VARRAYtype.那么如果我的SQL运行在一个我无法创建类型的未知系统上,因为我可能没有必要的资助呢?
所以我的问题是: Oracle是否知道任何Oracle实例上可用的"匿名" TABLE/ VARRAY类型?类似于Postgres/H2/HSQLDB的简单ARRAY类型?
更新:如果这是相关的,我主要是从Java运行这个SQL.不需要向我解释PL/SQL,我只是在寻找匿名的SQL数组类型(即"匿名" 独立存储类型).如果它们根本不存在,答案是否定的