Plsql 从双行中选择作为一行?

Plsql 从双行中选择作为一行?,plsql,plsqldeveloper,Plsql,Plsqldeveloper,从dual中选择多个字符串作为一列。我已经尝试过下面的解决方案,我可以接受它,使用PL/SQL宏添加“select from dual”相对容易。我想知道有没有其他方法可以做到这一点 select 'AAA' as code from dual union all select 'ABQ' from dual union all select 'ACA' from dual

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

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

  • SYS.KU$\u VCNT
  • SYS.DBMS\u DEBUG\u 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')));

您的示例中没有PL/SQL非常棒的回答Tony,谢谢。是否有其他用于数字、布尔值等的嵌入表类型?@AliArdaOrhan-我肯定有,但我目前不知道它们!