日期:2014-05-17  浏览次数:20989 次

存储过程 IF....THEN 的问题
在存储工程中
1个IF后可不可以跟两个结果
可以的话该这么写?
比如IF v_date:='20130101'
    then v_table='2012_12;
         v_date='20121231'+1
这样写可以吗?

------解决方案--------------------
IF v_date ='20130101'     then 
   v_table='2012_12;
   v_date='20121231'+1;
end if;

这样写
------解决方案--------------------
引用:
IF v_date ='20130101'     then 
   v_table='2012_12;
   v_date='20121231'+1;
end if;

这样写


写错了。 后面的两个得用 := 来赋值
------解决方案--------------------
可以的。

CREATE OR REPLACE PROCEDURE TBS.QQ_TEST_1 
AS
  j                 number;
begin
j := 0;
  if j = 0 then
   dbms_output.put_line(SYSDATE);
   dbms_output.put_line(SYSDATE);
  end if;

END QQ_TEST_1;
/

------解决方案--------------------
而且字符串不能用 + 号  得用 
------解决方案--------------------
 连接 
------解决方案--------------------
当然可以,语法正确就OK
if 表达式
then
表达式1;
表达式2;
...
end if
------解决方案--------------------
PS: 在oracle中,赋值用 :=,字符串连接 
------解决方案--------------------
可以,直接用
IF v_date='20130101' then
 v_date:='2012_12';
 v_date:='20121231'
------解决方案--------------------
1;
end if;
即可。