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

oracle 存储过程 怎么少用 if then
比方说句子select   a   from   tab_x
我想在句子有记录返回的时候执行     select   b   from   tab_y
无记录的时候         select   c   from   tab_z
其他错误的时候报错
怎么写句子简洁点呢
一大串if   then   esle     太无聊了。。。

begin  
    begin  
        select   ......
    exception  
        when   no_data_found   then     --找不数据的判断
            select   ...
    end;
  select   ...     ----这里no_data_found的时候时候不要执行的

exception  
    when     others   then  
        raise   ;
end;

这样写不对的

------解决方案--------------------
我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html
------解决方案--------------------
我習慣用指針,你可以試一試
CREATE OR REPLACE PROCEDURE MyTable
IS
CURSOR rs IS SELECT a FROM tab_x;
ee rs%ROWTYPE;
begin
OPEN rs;
FETCH rs INTO ee;
IF (rs%found) THEN --找到記錄
WHILE (rs%found) LOOP
SELECT b FROM tab_y;
FETCH rs INTO ee;
END LOOP;
ELSE --沒有找到記錄
SELECT c FROM tab_z;
END IF;
CLOSE rs;
END MyTable;