oracle第八讲plsql处理流程

上传人:今*** 文档编号:106211902 上传时间:2019-10-14 格式:PPT 页数:27 大小:1.25MB
返回 下载 相关 举报
oracle第八讲plsql处理流程_第1页
第1页 / 共27页
oracle第八讲plsql处理流程_第2页
第2页 / 共27页
oracle第八讲plsql处理流程_第3页
第3页 / 共27页
oracle第八讲plsql处理流程_第4页
第4页 / 共27页
oracle第八讲plsql处理流程_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《oracle第八讲plsql处理流程》由会员分享,可在线阅读,更多相关《oracle第八讲plsql处理流程(27页珍藏版)》请在金锄头文库上搜索。

1、Oracle数据库管理系统 第八讲 PL/SQL处理流程,第八讲 pl/sql处理流程,课程目标,条件语句,标号和goto语句、 NULL语句,1,2,3,光标的使用,4,第八讲 pl/sql处理流程,一、条件语句,IF THEN条件语句 IF . . . THEN ELSIF条件语句 CASE条件语句,第八讲 pl/sql处理流程,一、条件语句,最简单的条件语句是只有一次判断的IF语句,它的语法如下: IF THEN PL/SQL 和 SQL语句 END IF;,第八讲 pl/sql处理流程,一、条件语句,稍微复杂的条件语句是对条件的多次判断,它的语法如下: IF THEN PL/SQL 和

2、 SQL语句 ELSIF THEN 其它语句 END IF;,第八讲 pl/sql处理流程,一、条件语句,declare v_sal emp.sal%type; v_c varchar2(30); begin select sal into v_sal from emp where empno=,第八讲 pl/sql处理流程,一、条件语句,declare v_sal emp.sal%type; v_c varchar2(30); begin select sal into v_sal from emp where empno=,第八讲 pl/sql处理流程,二、循环语句,Loop endloo

3、p简单循环 while简单循环 FOR 循环,第八讲 pl/sql处理流程,二、循环语句,简单循环语句是: Loop 要执行的语句; exit when 布尔表达式; end loop; -此循环将执行到遇到一条 exit 语句为止.,第八讲 pl/sql处理流程,二、循环语句,实例1:简单循环的例子(在循环体中间加exit判断退出循环): declare x number; begin x := 0; loop x:=x+1; dbms_output.put_line(to_char(x); exit when x = 10; end loop; end;,第八讲 pl/sql处理流程,二、

4、循环语句,实例2. 简单循环的例子 DECLARE V_counter number := 1; Begin LOOP Insert into emp1(empno,ename) Values( v_counter, loop); V_counter := v_counter + 1; If v_counter 10 then Exit; End if ; End loop; - End;,第八讲 pl/sql处理流程,二、循环语句,WHILE语句的语法如下: While loop 要执行的语句; end loop;,第八讲 pl/sql处理流程,二、循环语句,例子:给出范围的WHILE循环:

5、 declare x number; begin x:= 1; while x10 loop dbms_output.put_line(to_char(x)|还小于10); x:= x+1; end loop; end;,第八讲 pl/sql处理流程,二、循环语句,For 循环也叫数字式循环,它的语法如下: For 循环计数器 in REVERSE 下限 上限 loop 要执行的语句; end loop;,第八讲 pl/sql处理流程,二、循环语句,例. 给出起点和终点的For 循环: begin for i in 1 10 loop dbms_output.put_line(in=|to_c

6、har(i); end loop; end;,第八讲 pl/sql处理流程,二、循环语句,DECLARE V_counter number := 30; Begin Insert into emp(empno) Values ( v_counter ); For v_counter IN 40 50 loop Insert into emp(empno) Values ( v_counter ); End loop; dbms_output.put_line(v_counter=|v_counter); End ;,第八讲 pl/sql处理流程,三、标号和GOTO语句,GOTO label;

7、. . . . . . 其中: 是要转移的标识,必须用双小于()括起。,第八讲 pl/sql处理流程,三、标号和GOTO语句,DECLARE V_counter number := 1; Begin LOOP Insert into emp1(empno,ename) Values( v_counter, loop); V_counter := v_counter + 1; If v_counter 50 then Goto l_endofloop; End if ; End loop; ? End;,第八讲 pl/sql处理流程,三、NULL语句,DECLARE V_counter numb

8、er := 1; Begin LOOP Insert into emp1(empno,ename) Values( v_counter, loop); V_counter := v_counter + 1; If v_counter 50 then Goto l_endofloop; End if ; End loop; NULL; - 不需要处理任何数据 End;,第八讲 pl/sql处理流程,四、光标的使用,1、光标概念 为了处理 SQL 语句,oracle 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示

9、形式的指针以及查询的活动集(active set)。 光标是一个指向上下文的句柄( handle)或指针。,第八讲 pl/sql处理流程,四、光标的使用,显式光标处理 显式光标处理需四个 PL/SQL步骤: cursor 光标名称 is select 语句; open 光标名称; Fetch 光标名称 into 变量列表; Close 光标名称;,第八讲 pl/sql处理流程,四、光标的使用,例1. 按照定义、打开、使用及关闭四个步骤使用光标: declare cursor c1 is select ename, sal from emp where rownum11; v_ename var

10、char2(10); v_sal number(7,2); begin open c1; fetch c1 into v_ename, v_sal; while c1%found loop dbms_output.put_line(v_ename|to_char(v_sal) ); fetch c1 into v_ename, v_sal; end loop; close c1; end;,第八讲 pl/sql处理流程,四、光标的使用,2.光标属性 %found 布尔型属性, 当最近一次读记录时成功返回,则值为true %notfound 布尔型属性,与%found相反 %isopen 布尔型

11、属性, 当光标已打开时返回 true %rowcount 数字型属性, 返回已从光标中读取的记录数,第八讲 pl/sql处理流程,四、光标的使用,例. 利用光标的属性%FOUND判断某个光标是否结束: LOOP FETCH c1 INTO my_ename, my_sal, my_hiredate; IF c1%FOUND THEN - fetch succeeded . ELSE - fetch failed, so exit loop EXIT; END IF; END LOOP;,第八讲 pl/sql处理流程,四、光标的使用,例3. 利用标的属性%ISOPEN判断某个光标是否已打开: I

12、F c1%ISOPEN THEN - cursor is open . ELSE - cursor is closed, so open it OPEN c1; END IF;,第八讲 pl/sql处理流程,四、光标的使用,隐式光标 隐式光标就是指不是由PL/SQL程序中定义的、而是在使用SQL语句时,系统自动分配的光标。这个光标的名字是SQL 。 一般来说,所有的SQL 语句在上下文区内部都是可执行的,因此都有一个光标指向上下文区,此光标就是所谓的SQL光标(SQL cursor),与显式光标不同,SQL 光标不被程序打开和关闭。,第八讲 pl/sql处理流程,四、光标的使用,例:使用隐式光标判定更新语句的执行情况 BEGIN UPDATE emp1 SET sal = 1000 WHERE empno=30; - 如果更新没有匹配则插入一新行 IF SQL%NOTFOUND THEN INSERT INTO emp1( empno,sal ) VALUES (30,1000) ; END IF; END;,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号