好吧,我对pl / sql和Oracle都不太了解,我遇到了一个无法解决的问题。
当我手动提出异常时,我想显示一个HTML代码或一个程序,我用百万种方式尝试了这个,这个是最合适的"我找到的解决方案,它一直没有工作。
在这段代码中,我试图不让人们删除和艺术家,如果一张专辑只有这位艺术家,因此我想显示一个html页面,而不是oracle的调试页面。
create or replace TRIGGER delete_artist
after delete
ON artist
DECLARE
albumartist NUMBER;
user_xcep EXCEPTION;
BEGIN
select count(*) INTO albumartist from
(
select a.ID, count(cn.artist)
from album a left join conjunt cn on a.id = cn.album
group by a.ID
having count(cn.artist) = 0
) album_artist;
IF albumartist > 0 THEN
RAISE user_xcep;
END IF;
EXCEPTION
when user_xcep then
htp.p('<h1>You can't leave an album without an artist</h1>');
RAISE;
END;
答案 0 :(得分:0)
异常被抛出到执行删除的程序。这种方法没有典型的&#34;关注点分离&#34;人们希望在设计良好的应用程序中看到[即1)它由触发器提供错误消息; 2)它由应用程序来呈现它,可以是html,......无论如何。
答案 1 :(得分:0)
EXCEPTION块内的RAISE再次重新引发EXCEPTION,这将导致调试页面出现。删除EXCEPTION块中的RAISE应显示htp.p结果。