编制控制结构的PL/SQL程序(函数):根据姓名修改SCOTT用户下的emp表中职工工资,修改规则是:DEPTNO的字段的值若为10,则工资加100元;若为20,则工资加300元,否则工资加400元
时间: 2023-05-19 16:06:49 浏览: 83
以下是根据您提供的要求编写的PL/SQL程序:
CREATE OR REPLACE FUNCTION modify_emp_salary (emp_name IN VARCHAR2) RETURN NUMBER IS
v_deptno emp.deptno%TYPE;
v_salary emp.sal%TYPE;
BEGIN
SELECT deptno, sal INTO v_deptno, v_salary FROM emp WHERE ename = emp_name;
IF v_deptno = 10 THEN
UPDATE emp SET sal = v_salary + 100 WHERE ename = emp_name;
ELSIF v_deptno = 20 THEN
UPDATE emp SET sal = v_salary + 300 WHERE ename = emp_name;
ELSE
UPDATE emp SET sal = v_salary + 400 WHERE ename = emp_name;
END IF;
COMMIT;
RETURN 1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 0;
END;
请注意,这是一个示例程序,可能需要根据实际情况进行修改。
相关问题
根据姓名修改SCOTT用户下emp表中职工工资,修改规则是: DEPTNO字段的值若为10,则工资加100元;若为20,则工资加300元,否则工资加400元,程序编好后,请用姓名为“SMITH"(注意大小写敏感哦)的调用。
好的,根据你的要求,我可以为您提供以下的SQL语句来实现修改SCOTT用户下emp表中职工工资的功能:
```
UPDATE scott.emp
SET sal =
CASE deptno
WHEN 10 THEN sal + 100
WHEN 20 THEN sal + 300
ELSE sal + 400
END
WHERE ename = 'SMITH';
```
请注意,上述SQL语句中的“scott”是指数据库中的用户,您需要根据自己的实际情况进行修改。另外,如果您要在程序中调用该SQL语句,可以使用JDBC等相关技术来实现。
编写一个PL/SQL程序块: 按工资分段(大于2500、(1400,2500)、1400元以下) 统计各工资段的职工人数
好的,以下是一个简单的 PL/SQL 程序块,用于按工资分段统计各工资段的职工人数:
```
DECLARE
v_count_1 NUMBER(6) := 0; -- 大于2500的人数
v_count_2 NUMBER(6) := 0; -- (1400,2500)之间的人数
v_count_3 NUMBER(6) := 0; -- 1400元以下的人数
BEGIN
FOR emp IN (SELECT salary FROM employees)
LOOP
IF emp.salary > 2500 THEN
v_count_1 := v_count_1 + 1;
ELSIF emp.salary > 1400 AND emp.salary <= 2500 THEN
v_count_2 := v_count_2 + 1;
ELSE
v_count_3 := v_count_3 + 1;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('>2500: ' || v_count_1);
DBMS_OUTPUT.PUT_LINE('(1400,2500): ' || v_count_2);
DBMS_OUTPUT.PUT_LINE('<=1400: ' || v_count_3);
END;
```
在这个程序块中,我们首先声明了三个变量,分别用于存储大于2500、(1400,2500)、1400元以下的人数。接着,我们使用一个 FOR 循环遍历员工表中的每个员工信息,通过 IF-ELSIF 结构将员工的工资分为不同的段,并将对应的计数器加 1。最后,我们使用 DBMS_OUTPUT.PUT_LINE 函数将各个工资段的人数输出到控制台中。
请注意,这个程序块只是一个简单的例子,仅用于演示如何按工资分段统计职工人数。在实际开发中,您需要根据具体的需求对程序进行修改和优化。