从双排中选择一行?

时间:2015-01-07 09:45:45

标签: plsql plsqldeveloper

从双列中选择多个字符串作为一列。我已经尝试过下面的解决方案,我可以忍受它,使用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

1 个答案:

答案 0 :(得分:3)

对于单列查询,有。您需要一个VARCHAR2表的数据库类型,并且某些数据库类型始终存在于oracle中,包括:

  • SYS.KU $ _VCNT
  • SYS.DBMS_DEBUG_VC2COLL

(如果您愿意,当然可以创建自己的。)

然后你可以像这样查询:

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')));