oracle --定制异常插入一条数据时如果薪资5000超出范围弹窗报错,删除20号部门的数据也要进行报错提示
时间: 2024-03-02 10:51:59 浏览: 68
好的,以下是 Oracle 数据库中定制异常插入一条数据时如果薪资5000超出范围弹窗报错,删除20号部门的数据也要进行报错提示的代码示例:
```sql
CREATE OR REPLACE PROCEDURE insert_employee (
p_name IN VARCHAR2,
p_salary IN NUMBER,
p_department_id IN NUMBER
) AS
BEGIN
IF p_salary > 5000 THEN
RAISE_APPLICATION_ERROR(-20001, '薪资超出范围!');
ELSE
INSERT INTO employee (name, salary, department_id) VALUES (p_name, p_salary, p_department_id);
END IF;
END;
CREATE OR REPLACE PROCEDURE delete_department (
p_department_id IN NUMBER
) AS
BEGIN
IF p_department_id = 20 THEN
RAISE_APPLICATION_ERROR(-20002, '禁止删除20号部门数据!');
ELSE
DELETE FROM employee WHERE department_id = p_department_id;
END IF;
END;
```
在上述代码中,我们创建了两个存储过程 `insert_employee` 和 `delete_department`,分别用于插入员工数据和删除部门数据。在 `insert_employee` 存储过程中,我们使用 `IF...ELSE` 语句判断薪资是否超出范围,如果超出则使用 `RAISE_APPLICATION_ERROR` 抛出异常,并指定异常代码 `-20001` 和异常信息 `'薪资超出范围!'`。在 `delete_department` 存储过程中,我们同样使用 `IF...ELSE` 语句判断部门编号是否为 20,如果是则使用 `RAISE_APPLICATION_ERROR` 抛出异常,并指定异常代码 `-20002` 和异常信息 `'禁止删除20号部门数据!'`。
在实际使用时,我们可以通过调用存储过程来插入或删除数据,如果遇到了异常情况,就会弹窗提示报错信息。例如,对于插入员工数据,可以使用以下代码:
```sql
BEGIN
insert_employee('张三', 6000, 10);
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -20001 THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
-- 这里可以弹窗提示报错信息
ELSE
RAISE;
END IF;
END;
```
如果插入的薪资超出范围,就会抛出异常,并输出异常信息 `'ORA-20001: 薪资超出范围!'`。我们可以在代码中进行捕获,并弹窗提示报错信息。对于删除部门数据,同理。
阅读全文