Select 从双排成一行?
Select from dual as one row?
至select 个双列中的多个字符串。我已经尝试了下面的解决方案,我可以接受它,使用 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
对于单列查询有。您需要一个 table 的 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')));
至select 个双列中的多个字符串。我已经尝试了下面的解决方案,我可以接受它,使用 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
对于单列查询有。您需要一个 table 的 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')));