实验: 使用PL/SQL 编程
实验目的
(1)掌握条件控制和循环控制语句的使用。
(2)掌握PL/SQL中变量。
(3)掌握记录类型和索引表类型的使用。
(4)掌握PL/SQL中的DML语句和事务控制语句。
实验内容
1.编写一个PL/SQL块,交换两个变量的值。分别显示交换前后的变量值。
SQL> SET SERVEROUTPUT ON
SQL> ED
已写入file afiedt.buf
1 DECLARE
2 v_num1 NUMBER(10);
3 v_num2 NUMBER(10);
4 v_num3 NUMBER(10);
5 BEGIN
6 v_num1:=1;
7 v_num2:=2;
8 v_num3:=0;
9 dbms_output.put_line('num1='||v_num1||' '||'num2='||v_num2);
10 v_num3:=v_num1;
11 v_num1:=v_num2;
12 v_num2:=v_num3;
13 dbms_output.put_line('num1='||v_num1||' '||'num2='||v_num2);
14* END;
SQL> /
num1=1 num2=2
num1=2 num2=1
PL/SQL 过程已成功完成。
2.编写一个PL/SQL块,用一个循环显示1~10之间的所有奇数。
SQL> ED
已写入file afiedt.buf
1 DECLARE
2 i number:=1;
3 BEGIN
4 WHILE i<=10
5 LOOP
6 DBMS_OUTPUT.PUT_LINE(i);
7 i:=i+2;
8 END LOOP;
9* END;
SQL> /
1
3
5
7
9
PL/SQL 过程已成功完成。
3.使用sql/plus,显示emp表中的职工号为7788的职工号,职工姓名和部门编号。
SQL> CONN SCOTT/TIGER
已连接。
SQL> SET SERVEROUTPUT ON
SQL> ED
已写入file afiedt.buf
1 DECLARE
2 v_empno NUMBER;
3 v_name V ARCHAR2(10);
4 v_deptno NUMBER;
5 BEGIN
6 SELECT empno,ename,deptno INTO v_empno,v_name,v_deptno
7 FROM emp WHERE empno=7788;
8 dbms_output.put_line(v_empno||' '||v_name||' '||v_deptno);
9* END;
SQL> /
7788 SCOTT 20
PL/SQL 过程已成功完成。
4.5个数求最大值(使用表类型)
设定5个数的值,求出其中最大的值,并赋值给mx变量。
SQL> SET SERVEROUTPUT ON
SQL> ED
已写入file afiedt.buf
1 DECLARE
2 TYPE dh_table_type IS TABLE OF NUMBER(20)
3 INDEX BY BINARY_INTEGER;
4 my_table dh_table_type;
5 v_mx NUMBER;
6 BEGIN
7 v_mx:=0;
8 my_table(1):=10;
9 my_table(2):=20;
10 my_table(3):=30;
11 my_table(4):=2;
12 my_table(5):=33;
13 FOR i IN my_table.FIRST..my_https://www.wendangku.net/doc/4b14912738.html,ST LOOP
14 IF v_mx 15 v_mx:=my_table(i); 16 END IF; 17 END LOOP; 18 DBMS_OUTPUT.PUT_LINE('THE MAX IS '||v_mx); 19* END; SQL> / THE MAX IS 33 PL/SQL 过程已成功完成。 5.输出乘法九九表 提示:(dbms_output.put(),不输出换行符,dbms_output.put_line(),输出换行符) SQL> SET SERVEROUTPUT ON; SQL> ED 已写入file afiedt.buf 1 declare 2 i number:=1; 3 j number:=1; 4 begin 5 for i in 1..9 loop 6 for j in 1..i loop 7 dbms_output.put(j||'*'||i||'='||i*j||' '); 8 end loop; 9 dbms_output.put_line(''); 10 end loop; 11* end; SQL> / 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 PL/SQL 过程已成功完成。