oracle教程从入门到精通 下载本文

复合变量——变长数组(varray)

参照变量——介绍

参照变量是指用于存放数值指针的变量。通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用的空间。在编写pl/sql程序时,可以使用游标变量(ref cursor)和对象类型变量(ref obj_type)两种参照变量类型。

参照变量——ref cursor游标变量 使用游标时,当定义游标时不需要指定相应的select语句,但是当使用游标时(open时)需要指定select语句,这样一个游标就与一个select语句结合了。实例如下:

1.请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有员工姓名和他的工资。

2.在1的基础上,如果某个员工的工资低于200元,就添加100元。 1.

Sql代码

1. declare

2. --定义游标sp_emp_cursor

3. type sp_emp_cursor is ref cursor; 4. --定义一个游标变量

5. test_cursor sp_emp_cursor; 6. --定义变量

7. v_ename emp.ename%type; 8. v_sal emp.sal%type; 9. begin 10.--执行

11.--把test_cursor和一个select结合

12.open test_cursor for select ename,sal from emp where deptno=&no; 13.--循环取出 14.loop

15. fetch test_cursor into v_ename,v_sal; 16. --判断是否test_cursor为空

17. exit when test_cursor%notfound;

18. dbms_output.put_line('名字:'||v_ename||' 工资:'||v_sal); 19.end loop; 20.end; 21./

精选

十九:pl/sql的进阶--控制结构(分支,循环,控制)

pl/sql的进阶--控制结构 介绍

在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...)在pl/sql中也存在这样的控制结构。 在本部分学习完成后,希望大家达到: 1.使用各种if语句 2.使用循环语句

3.使用控制语句——goto和null;

条件分支语句

pl/sql中提供了三种条件分支语句if—then,if – then – else,if – then – elsif – then

这里我们可以和java语句进行一个比较

简单的条件判断 if – then

问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。 Sql代码

1. create or replace procedure sp_pro6(spName varchar2) is

2. --定义

3. v_sal emp.sal%type; 4. begin

5. --执行

6. select sal into v_sal from emp where ename=spName;

7. --判断

8. if v_sal<2000 then

9. update emp set sal=sal+sal*10% where ename=spName;

10. end if; 11.end; 12./

二重条件分支 if – then – else

问题:编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0就在原来的基础上增加100;如果补助为0就把补助设为200; Sql代码

精选

1. create or replace procedure sp_pro6(spName varchar2) is

2. --定义

3. v_comm emp.comm%type; 4. begin

5. --执行

6. select comm into v_comm from emp where ename=spName;

7. --判断

8. if v_comm<>0 then

9. update emp set comm=comm+100 where ename=spName;

10. else

11. update emp set comm=comm+200 where ename=spName;

12. end if; 13.end; 14./

多重条件分支 if – then – elsif – then

问题:编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER就给他的工资增加500,其它职位的雇员工资增加200。 Sql代码

1. create or replace procedure sp_pro6(spNo number) is 2. --定义

3. v_job emp.job%type; 4. begin

5. --执行

6. select job into v_job from emp where empno=spNo;

7. if v_job='PRESIDENT' then

8. update emp set sal=sal+1000 where empno=spNo;

9. elsif v_job='MANAGER' then

10. update emp set sal=sal+500 where empno=spNo;

11. else

12. update emp set sal=sal+200 where empno=spNo;

13. end if; 14.end;

精选

15./

循环语句 –loop

是pl/sql中最简单的循环语句,这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次。 案例:现有一张表users,表结构如下: 用户id | 用户名 |

请编写一个过程,可以输入用户名,并循环添加10个用户到users表中,用户编号从1开始增加。 Sql代码

1. create or replace procedure sp_pro6(spName varchar2) is

2. --定义 :=表示赋值

3. v_num number:=1; 4. begin

5. loop

6. insert into users values(v_num,spName); 7. --判断是否要退出循环 8. exit when v_num=10; 9. --自增

10. v_num:=v_num+1; 11. end loop; 12.end; 13./

循环语句 –while循环

基本循环至少要执行循环体一次,而对于while循环来说,只有条件为true时,才会执行循环体语句,while循环以while...loop开始,以end loop结束。 案例:现有一张表users,表结构如下: 用户id 用户名

问题:请编写一个过程,可以输入用户名,并循环添加10个用户到users表中,用户编号从11开始增加。 Sql代码

1. create or replace procedure sp_pro6(spName varchar2) is

2. --定义 :=表示赋值

3. v_num number:=11;

精选

4. begin

5. while v_num<=20 loop 6. --执行

7. insert into users values(v_num,spName); 8. v_num:=v_num+1; 9. end loop; 10.end; 11./

循环语句 –for循环

基本for循环的基本结构如下 Sql代码

1. begin

2. for i in reverse 1..10 loop

3. insert into users values (i, 'shunping'); 4. end loop; 5. end;

我们可以看到控制变量i,在隐含中就在不停地增加。

顺序控制语句 –goto,null 1.goto语句

goto语句用于跳转到特定符号去执行语句。注意由于使用goto语句会增加程序的复杂性,并使得应用程序可读性变差,所以在做一般应用开发时,建议大家不要使用goto语句。

基本语法如下 goto lable,其中lable是已经定义好的标号名, Sql代码

1. declare

2. i int := 1; 3. begin

4. loop

5. dbms_output.put_line('输出i=' || i); 6. if i = 1{} then 7. goto end_loop; 8. end if;

9. i := i + 1; 10. end loop; 11. <>

12. dbms_output.put_line('循环结束'); 13.end;

精选