日期:2014-05-16  浏览次数:21080 次

Orcal IF 语句疑问
接触Oracle没多久,问个if语句的问题
比如:
declare 
bb varchar2(64);
begin
if 1=2 then
  select xx into bb from pub_table;
  update pub_table set xx ='1' 
end if;
end;

问:then之后有两个执行语句一个赋值,一个修改。两者之间没什么关系,我是随便写的。
(另外 如果单独写一条 select *from pub_table 在 if..end if 之间好像也不行,提示缺少into 关键字。。。Oracle if 有这样限制的么。。不能这样写么?)
但问题是,这样写好像通不过,if下面只能跟一个的么?因为 我如果写成:
declare 
bb varchar2(64);
begin
if 1=2 then
 begin
    select xx into bb from pub_table;
    update pub_table set xx ='1' 
 end;
end if;
end;
好像也通不过。
有谁知道有什么办法解么?或者有这方面的资料,百度了很久没找到答案,Oracle和sql这个差异有点弄不懂了。谢谢了各位~

------解决方案--------------------
pl/sql 中不能直接 select * from dual; 数据, 要跟into 赋值。这不是if else的限制。
第二个报错,是因为你的pl/sql块实际上相当于
declare 
bb varchar2(64);
begin
end;

begin end;中间必须要跟执行的语句,哪怕是放 null;