在没找到数据时如何不让产生例外?

[复制链接]
查看11 | 回复3 | 2012-5-15 15:24:11 | 显示全部楼层 |阅读模式
SQL> DECLARE
2V1 VARCHAR2(10);
3BEGIN
4SELECT ENAME INTO V1 FROM EMP WHERE ENAME='SDF';
5DBMS_OUTPUT.PUT_LINE(V1);
6END;
7/
DECLARE
*
ERROR 位于第 1 行:
ORA-01403: 未找到数据
ORA-06512: 在line 4

在没找到数据时如何不让产生例外?
THX

回复

使用道具 举报

千问 | 2012-5-15 15:24:11 | 显示全部楼层
DECLARE
V1 VARCHAR2(10);
BEGIN
SELECT ENAME INTO V1 FROM EMP WHERE ENAME='SDF';
DBMS_OUTPUT.PUT_LINE(V1);
exception when others then
null;
END;
/
最初由 tangpl 发布
[B]SQL> DECLARE
2V1 VARCHAR2(10);
3BEGIN
4SELECT ENAME INTO V1 FROM EMP WHERE ENAME='SDF';
5DBMS_OUTPUT.PUT_LINE(V1);
6END;
7/
DECLARE
*
ERROR 位于第 1 行:
ORA-01403: 未找到数据
ORA-06512: 在line 4

在没找到数据时如何不让产生例外?
THX
[/B]

回复

使用道具 举报

千问 | 2012-5-15 15:24:11 | 显示全部楼层
这是与上个问题相关的一个(上个问题:
about PL/SQL
在T—SQL中可以这样:
if (exist(select a from test) )then
...
end if;
请问:
在PL/SQL有没有类似的语法?


实际用在:
SQL> DECLARE
2V1 VARCHAR2(10);
3BEGIN
4SELECT 'E' INTO V1 FROM DUAL
5WHERE EXISTS (SELECT ENAME FROM EMP WHERE ENAME='AAAASAWSS');
6DBMS_OUTPUT.PUT_LINE(V1);
7END;
8/
DECLARE
*
ERROR 位于第 1 行:
ORA-01403: 未找到数据
ORA-06512: 在line 4
这例外实在讨厌,请问如何解决?
谢谢了!
回复

使用道具 举报

千问 | 2012-5-15 15:24:11 | 显示全部楼层
最初由 tangpl 发布
[B]SQL> DECLARE
2V1 VARCHAR2(10);
3BEGIN
4SELECT ENAME INTO V1 FROM EMP WHERE ENAME='SDF';
5DBMS_OUTPUT.PUT_LINE(V1);
6END;
7/
DECLARE
*
ERROR 位于第 1 行:
ORA-01403: 未找到数据
ORA-06512: 在line 4

在没找到数据时如何不让产生例外?
THX
[/B]

谢了。
不好意思,是我表达的不清楚,
我要它不产生例外,不是怎样处理例外。
我要的是下面的效果,看:
SQL> DECLARE
V1 VARCHAR2(10);
BEGIN
SELECT 'E' INTO V1 FROM DUAL
WHERE EXISTS (SELECT ENAME FROM EMP WHERE ENAME='AAAASAWSS');
if (v1='E') then
DBMS_OUTPUT.PUT_LINE(V1);
else
...
end if;
END;
8/
DECLARE
*
ERROR 位于第 1 行:
ORA-01403: 未找到数据
ORA-06512: 在line 4
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行