编写PL/SQL块,输入雇员姓名,查询该雇员的工资,如果该员工不存在,则输出“There is not such an employee!”;如果存在多个同名的员工,则输出“There are many employees!”
时间: 2024-12-13 13:26:12 浏览: 11
在Oracle数据库中,你可以使用PL/SQL过程来实现这个功能。首先,假设有一个名为"EMPLOYEES"的表,其中包含"ENAME"(员工姓名)和"SALARY"(工资)字段。下面是一个简单的示例:
```sql
DECLARE
v_employee_name VARCHAR2(50);
v_salary NUMBER;
BEGIN
-- 提示用户输入员工姓名
DBMS_OUTPUT.PUT_LINE('Please enter the employee name:');
LOOP
FETCH user_input INTO v_employee_name; -- 假设user_input是一个存储用户输入的地方
EXIT WHEN user_input = 'EXIT'; -- 如果用户输入'EXIT'退出循环
-- 查询工资
SELECT salary
INTO v_salary
FROM employees
WHERE ename = v_employee_name;
-- 检查结果
IF SQL%NOTFOUND THEN
DBMS_OUTPUT.PUT_LINE('There is not such an employee!');
ELSE
DBMS_OUTPUT.PUT_LINE('Employee salary: ' || v_salary);
IF SQL%BULK COLLECTED THEN
DBMS_OUTPUT.PUT_LINE('There are many employees with the same name!');
END IF;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error occurred: ' || SQLERRM);
END;
/
```
在这个PL/SQL块中,我们先获取用户的输入,然后查询数据库。如果没有找到匹配的记录,就显示相应的消息;如果有多个同名员工,也会告知用户。如果在查询过程中发生错误,会捕获异常并打印错误信息。
阅读全文