Oracle创建存储过程,根据指定员工编号删除该员工信息,并提示:已删除
时间: 2023-12-23 11:05:00 浏览: 204
可以使用以下代码创建一个存储过程来删除指定员工编号的员工信息,并在删除成功后提示用户已删除:
```sql
CREATE OR REPLACE PROCEDURE delete_employee (p_emp_id IN employees.employee_id%TYPE)
IS
BEGIN
DELETE FROM employees WHERE employee_id = p_emp_id;
DBMS_OUTPUT.PUT_LINE('已删除');
END;
```
该存储过程接受一个参数p_emp_id,它是要删除的员工编号。存储过程将使用DELETE语句从employees表中删除指定的员工信息。然后,它将使用DBMS_OUTPUT.PUT_LINE函数向用户显示一条消息“已删除”。
要调用该存储过程并删除员工,可以使用以下语句:
```sql
EXECUTE delete_employee(100); -- 将100替换为要删除的员工编号
```
如果员工已存在于employees表中,该存储过程将从表中删除该员工信息,并向用户显示消息“已删除”。如果员工不存在于表中,则不会进行任何操作。
相关问题
oracle --定制异常插入一条数据时如果薪资5000超出范围弹窗报错,删除20号部门的数据也要进行报错提示
好的,以下是 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: 薪资超出范围!'`。我们可以在代码中进行捕获,并弹窗提示报错信息。对于删除部门数据,同理。
阅读全文