关于引发异常的Html代码

时间:2017-05-12 21:34:36

标签: html oracle plsql

好吧,我对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&#39t leave an album without an artist</h1>');
   RAISE;
END;

2 个答案:

答案 0 :(得分:0)

异常被抛出到执行删除的程序。这种方法没有典型的&#34;关注点分离&#34;人们希望在设计良好的应用程序中看到[即1)它由触发器提供错误消息; 2)它由应用程序来呈现它,可以是html,......无论如何。

答案 1 :(得分:0)

EXCEPTION块内的RAISE再次重新引发EXCEPTION,这将导致调试页面出现。删除EXCEPTION块中的RAISE应显示htp.p结果。