3. 编写PL/SQL块,由键盘输入一个雇员编号,而后取得指定的雇员姓名
时间: 2024-06-06 14:11:25 浏览: 232
可以的,这是一个技术问题。以下是PL/SQL代码:
DECLARE
emp_name VARCHAR2(50);
emp_id NUMBER;
BEGIN
emp_id := &enter_emp_id; --从键盘输入雇员编号
SELECT e.ename INTO emp_name FROM emp e WHERE e.empno = emp_id;
--从员工表中查询雇员姓名
dbms_output.put_line('雇员姓名为:' || emp_name);
END;
当你输入雇员编号后,程序会从员工表中查询该雇员的姓名,并输出结果。
相关问题
编写PL/SQL块,由键盘输入一个雇员编号,而后取得指定的雇员姓名
,最后输出该雇员的姓名。
好的,这个问题可以回答。以下是一个示例PL/SQL块,可以实现这个功能:
DECLARE
v_emp_name VARCHAR2(100);
v_emp_id NUMBER;
BEGIN
-- 从键盘输入雇员编号
v_emp_id := &emp_id;
-- 查询雇员姓名
SELECT first_name || ' ' || last_name INTO v_emp_name
FROM employees
WHERE employee_id = v_emp_id;
-- 输出雇员姓名
DBMS_OUTPUT.PUT_LINE('雇员姓名为:' || v_emp_name);
END;
在代码中,我们先声明了两个变量:v_emp_name和v_emp_id,分别用于存储雇员姓名和雇员编号。然后,我们使用键盘输入函数&emp_id来获取用户输入的雇员编号,并将其赋值给v_emp_id变量。接着,我们使用SELECT语句来查询对应雇员的姓名,并将结果存储在v_emp_name变量中。最后,我们使用DBMS_OUTPUT.PUT_LINE函数来输出雇员姓名。
1. 编写PL/SQL,利用游标,对scott方案下emp表中某个部门的雇员涨工资,部门号及涨工资比例均由手动输入。如果输入部门号不存在,或涨工资比例大于50%,均捕获异常输出相应出错提示信息。 2. 编写存储过程,要求输入部门编号,输出scott.emp表中该部门所有职工的职工编号、姓名、工作岗位。 3. 编写函数,要求将scott.emp表中低于平均工资的职工工资加上200,并返回修改了工资的总人数。
好的,我会尽力回答你的问题。下面是我的回答:
1. PL/SQL代码如下:
```
DECLARE
v_deptno emp.deptno%TYPE;
v_raise_pct NUMBER(3,2);
CURSOR c_emp IS SELECT * FROM emp WHERE deptno = v_deptno FOR UPDATE OF sal;
BEGIN
v_deptno := &deptno;
v_raise_pct := &raise_pct;
IF v_raise_pct > 0.5 THEN
RAISE_APPLICATION_ERROR(-20001,'涨工资比例不能大于50%');
END IF;
OPEN c_emp;
LOOP
FETCH c_emp INTO emp_rec;
EXIT WHEN c_emp%NOTFOUND;
UPDATE emp SET sal = sal * (1 + v_raise_pct) WHERE CURRENT OF c_emp;
END LOOP;
CLOSE c_emp;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20002,'部门号不存在');
END;
```
2. 存储过程代码如下:
```
CREATE OR REPLACE PROCEDURE get_emp_by_deptno(p_deptno IN emp.deptno%TYPE)
IS
BEGIN
SELECT empno, ename, job
FROM emp
WHERE deptno = p_deptno;
END;
```
3. 函数代码如下:
```
CREATE OR REPLACE FUNCTION raise_low_salary_emp
RETURN NUMBER
IS
v_avg_sal emp.sal%TYPE;
v_cnt NUMBER := 0;
BEGIN
SELECT AVG(sal) INTO v_avg_sal FROM emp;
FOR emp_rec IN (SELECT * FROM emp WHERE sal < v_avg_sal)
LOOP
UPDATE emp SET sal = sal + 200 WHERE empno = emp_rec.empno;
v_cnt := v_cnt + 1;
END LOOP;
RETURN v_cnt;
END;
```
希望这些代码能够帮到你!
阅读全文