从双列中选择多个字符串作为一列。我已经尝试过下面的解决方案,我可以忍受它,使用PL / SQL宏相对容易添加“select from dual”。我想知道有没有其他方法来实现这个目标?
select 'AAA' as code
from dual
union all
select 'ABQ'
from dual
union all
select 'ACA'
from dual
union all
from dual
答案 0 :(得分:3)
对于单列查询,有。您需要一个VARCHAR2表的数据库类型,并且某些数据库类型始终存在于oracle中,包括:
(如果您愿意,当然可以创建自己的。)
然后你可以像这样查询:
select * from table (SYS.KU$_VCNT ('AAA','ABQ','ACA'));
对于具有多个列的查询,您需要专门为该查询创建一个类型,这不是一个非常有用的选项。但只是为了完整性,这就是你可以做到的:
create type my_obj_t as object(n number, d date, c varchar2(100));
create type my_tab_t as table of my_obj_t;
select * from table (my_tab_t(my_obj_t(1,sysdate,'aaa'),
my_obj_t(2,date '2014-12-31','bbb'),
my_obj_t(3,sysdate+2,'bbb')));