如果用自定义异常则可以创建如下代码
创新互联建站长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为孟州企业提供专业的成都网站建设、网站建设,孟州网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
Sql代码
declare
row_count int;
begin
select count(*) into row_count from tree_table where parent_id = '0001' ;
if (row_count 0) then
RAISE_APPLICATION_ERROR(-20001, '该节点有子节点,不能被删除。');
end if;
select count(*) into row_count from tree_table where id = '0001' and status 1 ;
if (row_count 0) then
RAISE_APPLICATION_ERROR(-20002, '该节点已被确认,不能被删除。');
end if;
delete from tree_table where id = '0001';
end;
你说的异常是什么意思?如果是,执行中的错误,那么可以用“调试”,不过需要有一个系统权限的拥护才能调试,权限好象是什么debug XXXXX。
如果说的是有时执行因为这样那样的数据问题出现的异常,那么一般都是通过exception来抛出异常的,这样的抛出的异常,你可以自己编代码,然后输入一张表内,这样就可以捕获异常了。如果1表示没有主键,2表示数据超长等等。具体的写法网上很多,这里就不写了。
举个例子:
create or replace trigger TRI_Test before insert on TABLE
for each row
declare
e_test exception;
begin
if inserting then
raise e;
end if;
end TRI_Test ;
在oracle的服务器上直接敲命令oerr错误类型、错误编号,oracle会告诉你错在什么地方,怎么解决这个错误,或者到oracle的网站上下载她的技术文档,然后打开,进入主页,在左上角有errormessage。点击进入,然后查找你要查看的error信息。
最笨的方法就是,每执行一个代码Debug一个数字,看看不抛错的时候,执行了些几句话
ps,不需要处理的错误 请不要catch,开废开销的,如果你catch还要继续抛,请直接写throw,不要写throw ex