收藏 分销(赏)

oracle第八讲plsql处理流程.ppt

上传人:w****g 文档编号:2403974 上传时间:2024-05-29 格式:PPT 页数:27 大小:1.43MB
下载 相关 举报
oracle第八讲plsql处理流程.ppt_第1页
第1页 / 共27页
oracle第八讲plsql处理流程.ppt_第2页
第2页 / 共27页
oracle第八讲plsql处理流程.ppt_第3页
第3页 / 共27页
oracle第八讲plsql处理流程.ppt_第4页
第4页 / 共27页
oracle第八讲plsql处理流程.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、 Oracle数据库管理系统数据库管理系统第八讲第八讲 PL/SQL处理流程处理流程12024/5/22 周三周三课程目标课程目标循环语句循环语句条件语句条件语句标号和标号和goto语句、语句、NULL语句语句123光标的使用光标的使用422024/5/22 周三周三一、一、条件语句条件语句 IF THEN条件语句条件语句 IF.THEN ELSIF条件语句条件语句 CASE条件语句条件语句 32024/5/22 周三周三一、一、条件语句条件语句 最简单的条件语句是只有一次判断的最简单的条件语句是只有一次判断的IF语语句,它的语法如下:句,它的语法如下:IF THEN PL/SQL 和和 SQ

2、L语句语句END IF;42024/5/22 周三周三一、一、条件语句条件语句 稍微复杂的条件语句是对条件的多次判断,它稍微复杂的条件语句是对条件的多次判断,它的语法如下:的语法如下:IF THEN PL/SQL 和和 SQL语句语句ELSIF THEN 其它语句其它语句END IF;52024/5/22 周三周三一、一、条件语句条件语句 declare v_sal emp.sal%type;v_c varchar2(30);begin select sal into v_sal from emp where empno=&no;if v_sal2000 then v_c:=很少很少;elsi

3、f v_sal4000 then v_c:=中等中等;else v_c:=小康小康;end if;dbms_output.put_line(v_c);end;62024/5/22 周三周三一、一、条件语句条件语句 declare v_sal emp.sal%type;v_c varchar2(30);begin select sal into v_sal from emp where empno=&no;case when (v_sal2000)then v_c:=很少很少;when (v_sal 10 then Exit;End if;End loop;-End;112024/5/22 周三

4、周三二、二、循环语句循环语句WHILEWHILE语句的语法如下:语句的语法如下:While While looploop 要执行的语句要执行的语句;end loop;end loop;122024/5/22 周三周三二、二、循环语句循环语句例子例子:给出范围的给出范围的WHILEWHILE循环:循环:declare x number;begin x:=1;while x10 loop dbms_output.put_line(to_char(x)|还小于还小于10);x:=x+1;end loop;end;132024/5/22 周三周三二、二、循环语句循环语句For For 循环也叫数字式循

5、环,它的语法如下:循环也叫数字式循环,它的语法如下:For For 循环计数器循环计数器 in REVERSE in REVERSE 下限下限 .上限上限 looploop 要执行的语句要执行的语句;end loop;end loop;142024/5/22 周三周三二、二、循环语句循环语句例例.给出起点和终点的给出起点和终点的For For 循环:循环:begin for i in 1 .10 loop dbms_output.put_line(in=|to_char(i);end loop;end;152024/5/22 周三周三二、二、循环语句循环语句DECLARE V_counter

6、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;162024/5/22 周三周三三、三、标号和标号和GOTOGOTO语句语句 GOTO label;GOTO label;.其中:其中:是是要要转转移移的的标标识识,必必须须用用双双小小于于()()()括起。括起。172024/5/22

7、周三周三三、三、标号和标号和GOTOGOTO语句语句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;182024/5/22 周三周三三、三、NULLNULL语句语句DECLARE V_counter number :=1;Begin LOOP Insert into emp1(empno,ena

8、me)Values(v_counter,loop);V_counter :=v_counter +1;If v_counter 50 then Goto l_endofloop;End if;End loop;NULL;-不需要处理任何数据不需要处理任何数据 End;192024/5/22 周三周三四、四、光标的使用光标的使用1 1、光标概念、光标概念为为了了处处理理 SQL SQL 语语句句,oracle oracle 必必须须分分配配一一片片叫叫上上下下文文(context context area area)的的区区域域来来处处理理所所必必需需的的信信息息,其其中中包包括括要要处处理理的

9、的行行的的数数目目,一一个个指指向向语语句句被被分分析析以以后后的的表表示示形形式的指针以及查询的活动集式的指针以及查询的活动集(active set)(active set)。光标是一个指向上下文的句柄光标是一个指向上下文的句柄(handle)(handle)或指针。或指针。202024/5/22 周三周三四、四、光标的使用光标的使用 显式光标处理显式光标处理显式光标处理需四个显式光标处理需四个 PL/SQLPL/SQL步骤步骤:cursor cursor 光标名称光标名称 is select is select 语句语句;open open 光标名称光标名称;Fetch Fetch 光标名

10、称光标名称 into into 变量列表变量列表;Close Close 光标名称光标名称;212024/5/22 周三周三四、四、光标的使用光标的使用例例1.按照定义、打开、使用及关闭四个步骤使用光标:按照定义、打开、使用及关闭四个步骤使用光标:declare cursor c1 is select ename,sal from emp where rownum11;v_ename varchar2(10);v_sal number(7,2);begin open c1;fetch c1 into v_ename,v_sal;while c1%found loop dbms_output.p

11、ut_line(v_ename|to_char(v_sal);fetch c1 into v_ename,v_sal;end loop;close c1;end;222024/5/22 周三周三四、四、光标的使用光标的使用2.2.光标属性光标属性%found%found 布尔型属性布尔型属性,当最近一次读记录时成功返回当最近一次读记录时成功返回,则值为则值为truetrue%notfound%notfound 布尔型属性布尔型属性,与与%found%found相反相反%isopen%isopen 布尔型属性布尔型属性,当光标已打开时返回当光标已打开时返回 truetrue%rowcount%r

12、owcount 数字型属性数字型属性,返回已从光标中读取的记录数返回已从光标中读取的记录数232024/5/22 周三周三四、四、光标的使用光标的使用例例.利用光标的属性利用光标的属性%FOUND%FOUND判断某个光标是否结束:判断某个光标是否结束:LOOPLOOP FETCH c1 INTO my_ename,my_sal,my_hiredate;FETCH c1 INTO my_ename,my_sal,my_hiredate;IF IF c1%FOUNDc1%FOUND THEN-fetch succeeded THEN-fetch succeeded .ELSE-fetch fail

13、ed,so exit loop ELSE-fetch failed,so exit loop EXIT;EXIT;END IF;END IF;END LOOP;END LOOP;242024/5/22 周三周三四、四、光标的使用光标的使用例例3.3.利用标的属性利用标的属性%ISOPEN%ISOPEN判断某个光标是否已打开:判断某个光标是否已打开:IF IF c1%ISOPEN c1%ISOPEN THEN-cursor is open THEN-cursor is open .ELSE-cursor is closed,so open itELSE-cursor is closed,so o

14、pen it OPEN c1;OPEN c1;END IF;END IF;252024/5/22 周三周三四、四、光标的使用光标的使用隐式光标隐式光标隐隐式式光光标标就就是是指指不不是是由由PL/SQLPL/SQL程程序序中中定定义义的的、而而是是在在使使用用SQLSQL语句时,系统自动分配的光标。这个光标的名字是语句时,系统自动分配的光标。这个光标的名字是SQLSQL 。一一般般来来说说,所所有有的的SQL SQL 语语句句在在上上下下文文区区内内部部都都是是可可执执行行的的,因因此此都都有有一一个个光光标标指指向向上上下下文文区区,此此光光标标就就是是所所谓谓的的SQLSQL光光标标(SQL(SQL cursor)cursor),与显式光标不同,与显式光标不同,SQL SQL 光标不被程序打开和关闭光标不被程序打开和关闭。262024/5/22 周三周三四、四、光标的使用光标的使用例例:使用隐式光标判定更新语句的执行情况使用隐式光标判定更新语句的执行情况BEGIN UPDATE emp1 SET sal=1000 WHERE empno=30;-如果更新没有匹配则插入一新行如果更新没有匹配则插入一新行 IF SQL%NOTFOUND THEN INSERT INTO emp1(empno,sal)VALUES(30,1000);END IF;END;27

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服