问: 显示所有医生的费用 预约低于最低限度。 如果存在,显示一条消息,要求这些医生 每次预约的费用增加30%。 否则,在异常中提供消息 处理程序通知用户此类结果。 允许用户输入最低费用 约定。 例外不起作用?
ACCEPT minchg PROMPT 'Enter the minimum charge per appointment: RM '
DECLARE
ex_min := chgperappt > &minchg EXCEPTION;
v_id doctor.doc_id%TYPE;
v_name doctor.doc_name%TYPE;
v_chg doctor.chgperappt%TYPE;
CURSOR doc_chg IS
SELECT doc_id, doc_name, chgperappt
FROM doctor
WHERE chgperappt < &minchg;
BEGIN
OPEN doc_chg;
LOOP
FETCH doc_chg INTO v_id, v_name, v_chg;
EXIT WHEN doc_chg%NOTFOUND;
DBMS_OUTPUT.PUT_LINE ('Dr. '||v_name||' ('||v_id||') is charging RM '|| v_chg);
DBMS_OUTPUT.PUT_LINE ('Please increase the charge per appointment by 30% --> RM '||v_chg*1.3);
EXCEPTION
WHEN ex_min THEN`enter code here`
DBMS_OUTPUT.PUT_LINE ('All charge per appointment met the minimum criteria.') ;
END LOOP;
CLOSE doc_chg;
END;
/
你可以帮忙吗?
答案 0 :(得分:0)
创建用户定义的异常并处理它的基本模板是这样的: (不是完整的代码示例,而是一个代码段)
DECLARE
ex_min EXCEPTION;
BEGIN
// open cursor, etc.
IF chgperappt > &minchg THEN
RAISE ex_min;
END IF;
// other code to execute if no exception is raised.
EXCEPTION
WHEN ex_min THEN
// add you code here for exception handling case
END;
以下是指向tutorial的链接,该链接逐步完成整个过程。希望有所帮助。