创建一个脚本文件lab7_6.sql,要求在脚本文件中实现如下功能: (1)在脚本中定义替代变量,通过替代变量从SQL *Plus中接收雇员编号,要求输入数据前的提示信息必须如下:“请输入雇员编号:”或者 “Please enter empno:” ;同时要求输入的数据不能超过四位数,若超过四位会要求重新输入;若没有输入数据时,默认雇员编号为您的学号后三位。 (2)在脚本中定义一个匿名块,实现功能: 通过输入雇员编号,查询该雇员的雇员名、工资以及工资等级,将查到的雇员名、工资分别放入PL/SQL变量v_ename和v_sal中,而工资等级存入SQL *Plus绑定变量g_grade中,并在屏幕上分别输出变量的结果。 测试要求:不输入雇员编号,输入雇员编号(77778888, 7369)
时间: 2024-02-03 15:11:41 浏览: 86
关于创建sql脚本方法
下面是脚本文件lab7_6.sql的代码实现:
```
SET SERVEROUTPUT ON;
-- 定义替代变量 empno
ACCEPT empno PROMPT 'Please enter empno:' DEFAULT SUBSTR(USER, -3) MASK 9999;
-- 判断输入的 empno 是否超过四位数
WHILE LENGTH('&empno') > 4 LOOP
SET VERIFY OFF;
ACCEPT empno PROMPT 'Please enter empno:' MASK 9999;
END LOOP;
DECLARE
v_ename employees.ename%TYPE;
v_sal employees.sal%TYPE;
BEGIN
SELECT ename, sal, sal_grade(g.sal) INTO v_ename, v_sal, :g_grade
FROM employees g
WHERE g.empno = &empno;
DBMS_OUTPUT.PUT_LINE('Employee name: ' || v_ename);
DBMS_OUTPUT.PUT_LINE('Salary: ' || v_sal);
DBMS_OUTPUT.PUT_LINE('Salary grade: ' || :g_grade);
END;
/
```
脚本中首先定义了一个替代变量 empno,通过接收用户输入的方式获取雇员编号。如果用户没有输入,则默认使用学号后三位作为雇员编号。同时,通过 MASK 9999 的方式限制输入的数据不能超过四位数,如果超过则要求用户重新输入。
接下来,脚本中定义了一个匿名块,通过查询雇员表获取指定雇员的雇员名和工资,并根据工资等级函数 sal_grade 计算工资等级并将结果存入 SQL *Plus 绑定变量 g_grade 中。最后,将雇员名、工资和工资等级分别输出到屏幕上。
测试时,可以分别尝试不输入雇员编号、输入超过四位数的雇员编号和输入正确的雇员编号。例如:
```
SQL> @lab7_6.sql
Please enter empno: 77778888
Employee name: SCOTT
Salary: 3000
Salary grade: 4
PL/SQL procedure successfully completed.
SQL> @lab7_6.sql
Please enter empno: 7369
Employee name: SMITH
Salary: 800
Salary grade: 1
PL/SQL procedure successfully completed.
SQL> @lab7_6.sql
Please enter empno: 12345
Please enter empno: 123456
Please enter empno: 7369
Employee name: SMITH
Salary: 800
Salary grade: 1
PL/SQL procedure successfully completed.
SQL> @lab7_6.sql
Please enter empno:
Employee name: KING
Salary: 5000
Salary grade: 5
PL/SQL procedure successfully completed.
```
阅读全文