编写一个PL/SQL程序块求1*2*3*4*...*10的值
时间: 2023-12-03 16:02:24 浏览: 35
```sql
DECLARE
result NUMBER := 1; -- 初始化结果为1
BEGIN
FOR i IN 1..10 LOOP -- 循环1到10
result := result * i; -- 计算阶乘
END LOOP;
DBMS_OUTPUT.PUT_LINE('1*2*3*4*...*10 = ' || result); -- 输出结果
END;
```
相关问题
编写一个PL/SQL程序块,以提升2个资格最老的职员为MANAGER(工作时间越长,资格越老)
以下是一个简单的PL/SQL程序块,它会将公司中最老的两名员工晋升为经理:
```sql
DECLARE
v_empno1 NUMBER;
v_empno2 NUMBER;
BEGIN
SELECT empno
INTO v_empno1
FROM employees
WHERE hiredate = (SELECT MIN(hiredate) FROM employees);
SELECT empno
INTO v_empno2
FROM employees
WHERE hiredate = (SELECT MIN(hiredate) FROM employees WHERE empno != v_empno1);
UPDATE employees
SET job = 'MANAGER'
WHERE empno IN (v_empno1, v_empno2);
COMMIT;
END;
```
这个程序块首先使用两个SELECT语句找到最老的两名员工的员工编号,然后使用一个UPDATE语句将这两名员工的工作职位更改为经理。最后一个COMMIT语句确认更改。
编写一个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 函数将各个工资段的人数输出到控制台中。
请注意,这个程序块只是一个简单的例子,仅用于演示如何按工资分段统计职工人数。在实际开发中,您需要根据具体的需求对程序进行修改和优化。