dbms_output.put_line('第二条的后一条记录为:'||tb.Next(2)||'其值为:'||tb(tb.Next(2)));
dbms_output.put_line('第二条记录为:'||tb(2)); tb.Delete(2);
dbms_output.put_line('删除第二条记录后的第二条记录为:'||tb(3)); End;
给出运行结果:
5.6. 条件判断语句的使用
阅读并理解以下程序,调试并给出运行结果。 1.If语句:
drop table employee;
create table employee( empno number(4), name varchar2(30), salary number(8,2) );
insert into employee values(7900,'黄蓉',3000); commit;
给出运行结果:
2.Case语句:
为了简化多个选择用if来做判断,这种case区别于编程语言中的case语句多用于多种情况的判断。
第 16 页 共 24 页
给出运行结果:
5.7. 循环语句的使用
阅读并理解以下程序,调试并给出运行结果。 0.建立一个临时表
--建立一个临时表,用于测试 DROP TABLE temp_table; CREATE TABLE temp_table ( num_col NUMBER, char_col VARCHAR2(60) );
1.LOOP语句 --LOOP语句 DECLARE
v_Counter NUMBER := 1; BEGIN LOOP
-- 以loop counter向temp_table Insert纪录 -- .
INSERT INTO temp_table
VALUES (v_Counter, 'Loop index'); v_Counter := v_Counter + 1;
-- 循环终止条件 - when the loop counter > 50 -- 跳出循环.
IF v_Counter > 10 THEN EXIT; END IF; END LOOP; END;
给出运行结果:
第 17 页 共 24 页
2.FOR LOOP语句
--FOR LOOP语句 BEGIN
FOR v_Counter IN 1..10 LOOP
dbms_output.put_line('v_Counter is ' || v_Counter); END LOOP;
--DBMS_OUTPUT.PUT_LINE(v_Counter); --在for循环外不可以访问循环变量 END;
给出运行结果:
3.while LOOP语句
--while LOOP语句 DECLARE
v_Counter NUMBER := 1; BEGIN
--v_Counter <= 10--循环. WHILE v_Counter <= 50 LOOP
dbms_output.put_line('v_Counter is ' || v_Counter); v_Counter := v_Counter + 1; END LOOP; END;
给出运行结果:
第 18 页 共 24 页
4.while语句
--WHILE语句 DECLARE
v_Counter NUMBER := 1; BEGIN
WHILE v_Counter <= 10 LOOP
-- 以loop counter向temp_table Insert纪录 -- .
INSERT INTO temp_table
VALUES (v_Counter, 'Loop index');
v_Counter := v_Counter + 1;
-- 循环终止条件 - when the loop counter > 50 -- 跳出循环.
END LOOP; END;
给出运行结果:
第 19 页 共 24 页
5.8. 综合练习
以下实验中用到的Exam_EMP表结构与内容与Scott模式下的表Emp相同,请用Create ?As命令创建并导入数据。而后,参照前面实验,完成以下实验练习。
1. 计算Exam_EMP表中COMM最高与最低的差值,COMM值为空时按0计算。
写出程序源码:
Declare
var1 number;
var2 number;
val_comm number;
begin
select max(nvl(comm,0)) into var1 from emp;
select min(nvl(comm,0)) into var2 from emp;
val_comm:=var1-var2;
dbms_output.put_line(val_comm); end;
给出运行测试结果:
2. 编写程序,根据表Exam_EMP中deptno字段的值,为姓名为‘JONES’的雇员修改工
资;若部门号为10,则工资加100;部门号为20,加200;其他部门加400。 写出程序源码:
set serveroutput on declare
v_deptno emp.deptno%type; addsal emp.sal%type; sal number;
begin
第 20 页 共 24 页