BEGIN
INSERT INTO TEST1 SELECT * FROM TEST2 ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
o_sqlcode :=SQLCODE;
o_msg:='无数据 出错';
rollback;
return ;
WHEN OTHERS THEN
o_sqlcode :=SQLCODE;
o_msg :=o_msg||SQLERRM;
rollback;
return;
END;我的问题是:当TEST2表没有数据时,我想达到的效果是:抛出异常,执行 WHEN NO_DATA_FOUND THEN.........。可是现在当TEST2没有数据时,直接运行成功了,没异常抛出!或许这样捕获是不对的,那应该怎么改????
INSERT INTO TEST1 SELECT * FROM TEST2 ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
o_sqlcode :=SQLCODE;
o_msg:='无数据 出错';
rollback;
return ;
WHEN OTHERS THEN
o_sqlcode :=SQLCODE;
o_msg :=o_msg||SQLERRM;
rollback;
return;
END;我的问题是:当TEST2表没有数据时,我想达到的效果是:抛出异常,执行 WHEN NO_DATA_FOUND THEN.........。可是现在当TEST2没有数据时,直接运行成功了,没异常抛出!或许这样捕获是不对的,那应该怎么改????
解决方案 »
- 关于sqlldr
- 新手写存储过程,提示执行成功,但是没有新表产生
- ORA-00205: error in identifying control file, check alert log for more info
- select 如何查询量个表并加查询23小时前的数据
- oracle的数据出版
- oracle数据源
- 关于distinct的问题
- 导出dmp的时候,出现ORA-12154: TNS: 无法处理服务名(sql plus中能连接成功)为何?(在线)
- 字符转换???
- 导数据时出现:作为源列4("content")的数据对于所指定的缓冲区来讲太大,怎么办?
- 求SQL:一个字段转变成一行
- 系统表sysman.MGMT_JOB_SCHEDULE做什么用的
BEGIN
select count(*) into v_num from test2;
if v_num=0 then
raise no_data_found;
INSERT INTO TEST1 SELECT * FROM TEST2 ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
o_sqlcode :=SQLCODE;
o_msg:='无数据 出错';
rollback;
return ;
WHEN OTHERS THEN
o_sqlcode :=SQLCODE;
o_msg :=o_msg||SQLERRM;
rollback;
return;
END;
select count(*) into v_num from test2;
if v_num=0 then
raise no_data_found;
end if;
INSERT INTO TEST1 SELECT * FROM TEST2 ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
o_sqlcode :=SQLCODE;
o_msg:='无数据 出错';
rollback;
return ;
WHEN OTHERS THEN
o_sqlcode :=SQLCODE;
o_msg :=o_msg||SQLERRM;
rollback;
return;
END;
BEGIN INSERT INTO TEST1 SELECT * FROM TEST2; COMMIT; if (sql%rowcount = 0) then
raise no_data_found;
end if;EXCEPTION
WHEN NO_DATA_FOUND THEN
o_sqlcode :=SQLCODE;
o_msg:='无数据 出错';
rollback;
return ; WHEN OTHERS THEN
o_sqlcode :=SQLCODE;
rollback;
return ;
END;
declare
num number;
BEGIN
select count(*) into num FROM TEST2 ;
if num>0 then
INSERT INTO TEST1 SELECT * FROM TEST2 ;
else
raise_application_error(-20001,'没有数据');
end if;
exception
WHEN OTHERS THEN
o_sqlcode :=SQLCODE;
o_msg :=o_msg||SQLERRM;
rollback;
return;
END;