Выделите несколько строк в несколько переменных - Oracle PL / SQL - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть один оператор select, который возвращает запрос, подобный следующему:

SELECT value FROM dummy WHERE condition = 1;

    ROW | value
   -----|-----
    1   | val1
    2   | val2
    3   | val3
    4   | val4

У меня есть 4 переменные

r1, r2, r3, r4

Какой самый чистый способ присвоения этим переменным значений моего запрос? Могу ли я использовать инструкцию SELECT INTO?

Ответы [ 2 ]

2 голосов
/ 18 февраля 2020

Один метод:

SELECT p_v1 = MAX(CASE WHEN row = 1 THEN value end),
       p_v2 = MAX(CASE WHEN row = 2 THEN value end),
       p_v3 = MAX(CASE WHEN row = 3 THEN value end),
       p_v4 = MAX(CASE WHEN row = 4 THEN value end)
FROM dummy
WHERE condition = 1;

Это запрос агрегации, который возвращает одну строку. Если конкретная строка отсутствует, то значение будет NULL.

1 голос
/ 18 февраля 2020

Вы можете PIVOT следующим образом;

Select v1, v2, v3, v4 
       Into val1, val2, val3, val4
From (SELECT value FROM dummy WHERE condition = 1)
Pivot
(Max(value) for row in (1 as v1, 2 as v2, 3 as v3, 4 as v4))

Ура !!

...