Oracle plsql将同一列中的2个值存储在2个不同的变量中

Oracle plsql将同一列中的2个值存储在2个不同的变量中,sql,oracle,plsql,Sql,Oracle,Plsql,我的表tbl有如下值: +-------+ |name | +-------+ |n1 | |n2 | +-------+ 我想要的是使用一个查询,将值n1和n2同时存储到两个不同的变量中 declare val1 varchar2(2); val2 varchar2(2); begin select name into --val1,val2 from tbl where ... end; val1的值必须为n1,val

我的表tbl有如下值:

+-------+
|name   |
+-------+
|n1     |
|n2     |
+-------+
我想要的是使用一个查询,将值n1和n2同时存储到两个不同的变量中

declare
    val1 varchar2(2);
    val2 varchar2(2);
begin
    select name 
    into --val1,val2
    from tbl
    where ...
end;

val1的值必须为n1,val2的值必须为n2使用简单的聚合,如下所示:

select max(name), min(name)
  into val1, val2 
  from tbl;
这也适用于非数值变量

或者在单个查询中使用相关子查询,如下所示:

select ( select name from tbl where name = 'n1' ),
       ( select name from tbl where name = 'n2' )  
  into val1, val2 
  from dual;

使用一个简单的聚合:

select max(name), min(name)
  into val1, val2 
  from tbl;
这也适用于非数值变量

或者在单个查询中使用相关子查询,如下所示:

select ( select name from tbl where name = 'n1' ),
       ( select name from tbl where name = 'n2' )  
  into val1, val2 
  from dual;

要使其可读,可以在语句中添加2个select:

select name 
into val1
from tbl
where name = 'n1';

select name 
into val2
from tbl
where name = 'n2';

要使其可读,可以在语句中添加2个select:

select name 
into val1
from tbl
where name = 'n1';

select name 
into val2
from tbl
where name = 'n2';