oracle 在特定的情况下需要查询满足条件,需跳出存储过程语句,示例:
CREATE OR REPLACE PROCEDURE PROC_STATETABLE(inputterm IN VARCHAR2,
return_value out varchar2) IS
pragma autonomous_transaction;
---------------------------------------------------------------------
-- 作 者:我是毕加索
-- 日 期:20171219
-- 功能描述:数仓获取文件状态
-- 传入参数:inputTerm 格式:YYYYMMDD
-- return_value :返回值
-- 算法描述:
-- 依赖关系:
-- 源 表:
-- 参数表:
-- 目标表:STATETABLE 状态表
-- 备 注:
-- 修改历史:
-- [时 间] 内容 修改人
-- ---------- -------------------------------------------- -------
---------------------------------------------------------------------
gdate VARCHAR2(8);
V_COUNT NUMBER;--文件个数
BEGIN
gdate := to_char(to_date(inputterm, 'YYYY-MM-DD'), 'yyyymmdd');
--开始查询语句
select count(1) into V_COUNT from STATE_TABLE where FILE_TREAM =gdate;
--死循环执行语句
LOOP
--在此不停的查询,赋值给V_COUNT
select count(1) into V_COUNT from STATE_TABLE where FILE_TREAM =gdate;
if V_COUNT >0 then
return_value := 'yes'; --完成执行
EXIT;--强制退出存储过程
else
return_value := 'wait'; --等待执行
end if;
END LOOP;
EXCEPTION
WHEN OTHERS Then
return_value := substr(sqlerrm, 1, 300);
rollback;
END PROC_STATETABLE;