编写 PL/SQL 程序,查询 1 号员工的工资,使用 CASE 语句输出其工资等级。工资 小于等于 3000,等级为“低”;工资大于 3000,小于 5000,等级为”中”;工资大于等 于 5000,等级为高;
时间: 2024-05-12 21:13:34 浏览: 48
以下是实现该功能的 PL/SQL 程序:
```
DECLARE
salary NUMBER(8,2);
grade VARCHAR2(10);
BEGIN
SELECT SAL INTO salary FROM EMP WHERE EMPNO = 1;
CASE
WHEN salary <= 3000 THEN
grade := '低';
WHEN salary > 3000 AND salary < 5000 THEN
grade := '中';
ELSE
grade := '高';
END CASE;
DBMS_OUTPUT.PUT_LINE('员工1的工资为:' || salary || ',等级为:' || grade);
END;
```
程序首先声明了两个变量:salary 和 grade,分别用于存储 1 号员工的工资和其工资等级。然后使用 SELECT 语句查询 1 号员工的工资,并将结果存储到 salary 变量中。
接下来使用 CASE 语句判断 salary 的大小,根据不同的情况将对应的工资等级赋值给 grade 变量。
最后使用 DBMS_OUTPUT.PUT_LINE 函数输出查询结果,包括员工1的工资和其工资等级。
注意:在执行该程序前需要保证 EMP 表中存在编号为 1 的员工记录。
相关问题
4、编写PL/SQL程序,查询1号员工的工资,使用CASE语句输出其工资等级。工资小于等于3000,等级为“低”;工资大于3000,小于5000,等级为”中”;工资大于等于5000,等级为高;
在PL/SQL中,你可以使用`CASE`语句结合`SELECT`来实现这样的需求。下面是一个示例程序:
```sql
DECLARE
v_employee_id NUMBER := 1;
v_salary NUMBER; -- 假设这是从某个表中查询到的员工工资
BEGIN
SELECT salary
INTO v_salary
FROM employees
WHERE employee_id = v_employee_id;
-- 使用CASE语句确定工资等级
DECLARE
v_salary_grade VARCHAR2(10);
BEGIN
CASE v_salary
WHEN 0 THEN v_salary_grade := '未提供'; -- 处理数据可能的缺失值
WHEN 3000 OR v_salary <= 3000 THEN v_salary_grade := '低';
WHEN 5000 THEN v_salary_grade := '中';
ELSE v_salary_grade := '高';
END CASE;
DBMS_OUTPUT.PUT_LINE('员工ID ' || v_employee_id || ' 的工资等级为: ' || v_salary_grade);
END;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('员工ID ' || v_employee_id || ' 的记录不存在');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('错误:' || SQLERRM);
END;
/
```
这段代码首先查询指定员工的工资,然后根据`CASE`语句判断工资等级,并将结果显示出来。
plsql 创建存储过程 GetGrade,查询指定员工的工资,使用 CASE 语句输出其工资等级。 工资小于等于 3000,等级为“低”;工资大于 3000,小于 5000,等级为”中”;工资大 于等于 5000,等级为高。并执行该存储过程。
以下是使用 PL/SQL 创建存储过程 GetGrade,并查询指定员工的工资等级的示例代码:
```
CREATE OR REPLACE PROCEDURE GetGrade (emp_id IN NUMBER) AS
salary NUMBER;
grade VARCHAR2(10);
BEGIN
SELECT salary INTO salary FROM employees WHERE employee_id = emp_id;
CASE
WHEN salary <= 3000 THEN
grade := '低';
WHEN salary > 3000 AND salary < 5000 THEN
grade := '中';
WHEN salary >= 5000 THEN
grade := '高';
END CASE;
DBMS_OUTPUT.PUT_LINE('员工 ' || emp_id || ' 的工资等级为 ' || grade);
END;
/
```
在执行该存储过程时,需要传入参数 emp_id,指定要查询的员工的 ID。例如,查询员工 ID 100 的工资等级,可以使用以下语句:
```
EXECUTE GetGrade(100);
```
该语句将会输出:员工 100 的工资等级为 中。
阅读全文