СЛУЧАЙ, КОГДА ... В - Хранимая процедура - PullRequest
2 голосов
/ 03 декабря 2010

есть ли способ сделать CASE WHEN INTO Statement?

Create or replace procedure example
AS
 Variable1 varchar;
 Variable2 varchar;

BEGIN
    Select (CASE WHEN number = 1 THEN
                This_thing INTO Variable1
            ELSE
                That_thing INTO Variable2) The_Other
    FROM table;
END;

Ответы [ 2 ]

5 голосов
/ 03 декабря 2010

Мы не можем получить два вывода из одного оператора CASE (). Лучшее, чего вы можете достичь - это два отдельных вызова с взаимоисключающими условиями:

create or replace procedure example as

    variable1 t69.this_thing%type;
    variable2 t69.that_thing%type;

begin
    select (case when whatever = 1 then
                this_thing 
            else
                null 
            end )   
        ,  (case when whatever != 1 then
                that_thing
            else
                null 
            end )   
    into variable1, variable2        
    from t69;
end;
/
2 голосов
/ 03 декабря 2010

Нет, но вы можете так:

declare 
 Variable1 varchar2(30);
 Variable2 varchar2(30);
BEGIN
    Select decode(dummy,'X','This_thing'),  
           decode(dummy,'X',null,'That_thing')
    INTO Variable1,Variable2
    FROM dual;
END;
...