Sql 当…进入存储过程时的情况

Sql 当…进入存储过程时的情况,sql,oracle,stored-procedures,plsql,case,Sql,Oracle,Stored Procedures,Plsql,Case,有什么方法可以在进入语句时处理案例 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_Ot

有什么方法可以在进入语句时处理案例

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;
不,但你可以这样做:

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;

我们无法从单个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;
/

Two-INTO子句不是一个有效的查询(当whater!=1时为空,否则为空),whole将替换为whater=1