如何在过程中创建用户定义的异常?
Posted
技术标签:
【中文标题】如何在过程中创建用户定义的异常?【英文标题】:How to create user defined exception in a procedure? 【发布时间】:2021-05-05 06:36:06 【问题描述】:使用过程将员工记录添加到员工表中,同时验证输入值薪水必须始终大于或等于 500,针对任何验证错误引发用户定义的异常。
【问题讨论】:
这不是标题 您遇到问题了吗?什么问题?你试过什么?您需要编辑您的问题以证明您遇到的具体问题,然后我们可以开始帮助您。不过,我们不会为你做作业! 【参考方案1】:你可以创建这样的东西。也为其他列添加参数
CREATE OR REPLACE PROCEDURE insert_emp (salary NUMBER)
AS
invalid_salary EXCEPTION;
BEGIN
IF salary < 500 THEN
RAISE invalid_salary;
ELSE
INSERT INTO employees(salary) VALUES (salary);
COMMIT;
END IF;
END;
您还可以将异常编号与异常相关联
用户定义异常的异常编号必须在 -20000 到 -20999 的范围内
CREATE OR REPLACE PROCEDURE insert_emp (salary NUMBER)
AS
invalid_salary EXCEPTION;
PRAGMA EXCEPTION_INIT (invalid_salary, -20100);
BEGIN
IF salary < 500 THEN
RAISE invalid_salary;
ELSE
INSERT INTO employees(salary) VALUES (salary);
COMMIT;
END IF;
END;
【讨论】:
【参考方案2】:这听起来像是一个家庭作业问题,所以我将放弃使用触发器,除了可能需要并且显示更好的处理方法。您提出用户定义的异常“无效工资”,但是除非您的代码处理它,否则 Oracle 将抛出错误“ORA-06510 未处理的用户定义的异常”,表明它不知道它是什么。那么有什么更好的方法:定义列并在其上包含检查约束。
Create table employees (...
, salary number(8,2) not null
constraint salary_less_then_minimum check (salary >= 500)
, ...);
【讨论】:
问题中提到应该是一个程序。以上是关于如何在过程中创建用户定义的异常?的主要内容,如果未能解决你的问题,请参考以下文章