Oracle plsql хранит 2 значения из одного столбца в 2 разных переменных - PullRequest
0 голосов
/ 19 ноября 2018

В моей таблице 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

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Чтобы сделать его читабельным, вы можете добавить 2 выражения в операторы:

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

select name 
into val2
from tbl
where name = 'n2';
0 голосов
/ 19 ноября 2018

Используйте простое агрегирование в виде:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...