在存储过程里,Select一条记录的一列值into一个变量,但那条记录不存在,报“ORA-01403:未找到数据”,怎么解决的?

fangerhua 2005-06-13 10:19:26
在存储过程里,Select一条记录的一列值into一个变量,但那条记录不存在,报“ORA-01403:未找到数据”,怎么解决的?
...全文
360 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
DF_4B 2005-06-13
  • 打赏
  • 举报
回复
楼主需要学习ORACLE中提供的“异常处理”功能,下面是一个在存储过程中使用“异常处理”示例:

CREATE OR REPLACE PROCEDURE prc_selTest (inPhone IN CHAR DEFAULT 'null', cityName OUT CHAR) AS
/*“OR REPLACE”自动删除已经存在的同名存储过程,“IN”输入参数,“OUT”输出参数*/
phoneNum VARCHAR(15);
BEGIN
IF (substr(inPhone,1,2)<>'86') THEN
phoneNum:='86' || inPhone;
ELSE
phoneNum:=inPhone;
END IF;

SELECT city_name
INTO cityName
FROM tb_phone_no
WHERE phone_no=substr(phoneNum,3,7);
EXCEPTION
WHEN no_data_found THEN /*未找到记录时的异常处理*/
DBMS_OUTPUT.PUT_LINE('INPUT: ' || inPhone || '. No data found for SELECT .. INTO!');
WHEN too_many_rows THEN /*查询到多条记录时的异常处理*/
DBMS_OUTPUT.PUT_LINE('Too many rows found for SELECT .. INTO!');
END prc_selTest;
yzqing 2005-06-13
  • 打赏
  • 举报
回复
给个异常,如果没有找到的话会触发这个异常的
bzszp 2005-06-13
  • 打赏
  • 举报
回复
select max(col_name) into v_col from ...;
if v_col is null then
'not found';
else
...
end if;
或者
begin
select .. into .. from ...;
...
exception when no_data_found then
...
end;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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