0

我可以在 oracle 11g 中使用case来执行一些操作(在 PL/SQL 中)还是必须返回一个值,我的意思是,我可以在 mysql 中执行此操作:

Select <column> from <table> where <conditions>;

case <column>   
 when 1 then      
  -- Quite many processes, queries, inserts, etc   
 when 2 then  
  -- some complex code  
-- And so on

是否有可能在 oracle 中实现?
我也想知道我是否可以这样做,因为我在该行中遇到了 oracle 错误,我的意思是,在ELSE 的 Case 语句
中设置一些变量

CASE WHEN <condition> THEN varY := z ELSE var1:= x, var2:=x, var3:=y END
4

1 回答 1

2

如果您真的在谈论 PL/SQL,那么您当然可以在一个CASE语句中执行多个操作的代码。CASE除了PL/SQL 中的语句以END CASEnot结尾的语法错误之外,您发布的代码应该可以正常工作END

SQL> ed
Wrote file afiedt.buf

  1  declare
  2    l_var1 number := 4;
  3    l_var2 number := 8;
  4  begin
  5    case when l_var1 = l_var2
  6         then l_var1 := 12;
  7         else
  8            l_var1 := 10;
  9            l_var2 := 6;
 10            dbms_output.put_line( 'I''m in the ELSE clause' );
 11     end case;
 12* end;
SQL> /
I'm in the ELSE clause

PL/SQL procedure successfully completed.

如果您谈论的是 SQL,而不是 PL/SQL,那么不,您不能嵌入过程语句,例如CASE在 SQL 语句中分配 PL/SQL 变量。

于 2013-02-08T22:44:25.747 回答