请把忙看看这个存储过程为什么不对。

z3h 2005-03-17 10:42:05
今天刚开始写写存储过程,发现SQL%FOUND不起作用,如果查询不到数据,就出NO_DATA_FOUND异常。

CREATE OR REPLACE PROCEDURE KF_GETDQDM(
v_zjhm in varchar2,
v_bjhm in varchar2,
v_dqdm out varchar2
)
AS
i_dqdm varchar2(10);
BEGIN
select dqbh into i_dqdm
from power.KF_DQHDDBZ
where v_bjhm like bjdhhd||'%' and v_zjhm like zjdhhd||'%';
if not SQL%FOUND then
select dqbh into i_dqdm
from (
select dqbh from power.KF_DQHDDBZ
where v_bjhm like bjdhhd||'%'
order by xh
) where rownum=1;
if not SQL%FOUND then
v_dqdm:='000000';
else
v_dqdm:=i_dqdm;
end if;
else
v_dqdm:=i_dqdm;
end if;
END KF_GETDQDM;
/
...全文
133 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
MountLion 2005-03-18
  • 打赏
  • 举报
回复
select不能用sql%found判断,只能使用exception处理。
不过这种多重判断,还是使用游标吧。这样结构扁平些,容易理解。
mingxuan3000 2005-03-18
  • 打赏
  • 举报
回复
学习
z3h 2005-03-18
  • 打赏
  • 举报
回复
顶一下,大虾们出个主意呀。
z3h 2005-03-18
  • 打赏
  • 举报
回复
说明一下,我是在oracle817下调试的。
报错就在第一个sql语句上。
bzszp 2005-03-18
  • 打赏
  • 举报
回复
用pl/sql developer单步调试一下
z3h 2005-03-18
  • 打赏
  • 举报
回复
顶一下。
z3h 2005-03-18
  • 打赏
  • 举报
回复
谢谢csqno1(朱茵追我整條街)。结贴。
zwj0712 2005-03-18
  • 打赏
  • 举报
回复
select dqbh into i_dqdm
from power.KF_DQHDDBZ
where v_bjhm like bjdhhd||'%' and v_zjhm like zjdhhd||'%';
这句话在ORACLE下不行,改成INSERT INTO 就好了
csqno1 2005-03-18
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE KF_GETDQDM(
v_zjhm in varchar2,
v_bjhm in varchar2,
v_dqdm out varchar2
)
AS
i_dqdm varchar2(10);
BEGIN
begin
select dqbh into i_dqdm
from power.KF_DQHDDBZ
where v_bjhm like bjdhhd||'%'
and v_zjhm like zjdhhd||'%';
v_dqdm:=i_dqdm;
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
select dqbh into i_dqdm
from (select dqbh from power.KF_DQHDDBZ
where v_bjhm like bjdhhd||'%'
order by xh )
where rownum=1;
v_dqdm:=i_dqdm;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_dqdm:='000000';
END;
end;
END KF_GETDQDM;
/
liuyi8903 2005-03-18
  • 打赏
  • 举报
回复
找不到数据是会抛出NO_DATA_FOUND 异常.这很正常.

你可以在异常里面进行处理.

楼上的建议不错.用游标就不会出现这种情况了.

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧