ImageVerifierCode 换一换
格式:PPTX , 页数:142 ,大小:1.45MB ,
资源ID:10261336      下载积分:22 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10261336.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(Oracle10g数据库管理系统.pptx)为本站上传会员【丰****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Oracle10g数据库管理系统.pptx

1、Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Click to edit Master title style,Click to edit Master text s

2、tyles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京应用技术大学软件学院,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京应用技术大学软件学院,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京应用技术大学软件学院,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京应用技术大学软件学院,*,单击此处编辑母版标题样式

3、单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京应用技术大学软件学院,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,北京应用技术大学软件学院,*,实用数据库技术,Oracle10g,数据库管理系统,第1页,学习内容,Oracle,概述,Oracle 10g,数据库安装,Oracle 10g,数据库卸载,Oracle 10g,惯用管理工具,Oracle10g,表管理,使用过程和触发器,第2页,Oracle 概述,Oracle,企业,Oracle,数据库,第3页,Oracle 10g数据库安装,服务器安装需求,版本,企业版,标准版,个人版,

4、最低配置,CPU,:,Pentium 166,内存:,128MB,硬盘空间:企业版,(1,76GB),:标准版,(1,76GB),:个人版,(1,72GB),视频:,256,色,第4页,Oracle 10g数据库安装,客户端安装需求,安装类型,管理者,(administrator),运行时环境,(runtime),自定义,(custom),最低配置,CPU,:,Pentium 166,内存:,128MB,硬盘空间:,管理者(647MB):运行时环境(486MB),第5页,Oracle 10g数据库安装,过程,(,略,),第6页,Oracle 数据库,卸载,1,、停顿服务,2,、卸载,Oracl

5、e,产品,3,、清理注册表,4,、清理环境变量,5,、清理磁盘,第7页,Oracle,卸载,1/5,开始设置控制面板管理工具服务停顿全部,Oracle,服务,第8页,Oracle,卸载,2/5,开始程序,Oracle Installation Products,Universal Installer,卸装全部,Oracle,产品,但,Universal Installer,本身不能被删除,第9页,Oracle,卸载,3/5,运行,regedit,HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices,滚动这个列表,删除全部,Oracle,入口。,HK

6、EY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplication,,除全部,Oracle,入口。,第10页,Oracle,卸载,4/5,开始设置控制面板系统高级环境变量,删除环境变量,CLASSPATH,和,PATH,中相关,Oracle,设定,第11页,Oracle,卸载,5/5,从桌面上、,STARTUP,(开启)组、程序菜单中,删除全部相关,Oracle,组和图标,删除,Program FilesOracle,目录,重新开启计算机,重起后才能完全删除,Oracle,所在目录,删除与,Oracle,相关文件,选择,Orac

7、le,所在缺省目录,C:Oracle,,删除这个入 口目录及全部子目录,并从,Windows,目录(普通为,C:WINNT,)下删除以下文件,ORACLE.INI,、,oraodbc.ini,等等。,第12页,Oracle10g,惯用管理工具,OEM,控制台,SQL*PLUS,工具介绍,第13页,Oracle10g,表管理,在,Oracle,中建表,主要有两种方式:,一个是在,SQL*PLUS,中执行建表,SQL,语句。,另一个是经过,OEM,工具。,第14页,Oracle10g,数据中数据类型,数据类型,类型说明,CHAR,字符型,最长为B,NCHAR,基于字符集字符型,同上,VARCHAR

8、2,变长字符型,最长为,4000B,NVARCHAR2,基于字符集变长字符型,同上,VARCHAR,同,VARCHAR2,LONG,变长字符型,最长为,2GB,NUMBER(s,d),数字型,总位数为,s,位,小数位为,d,位,总长最大为,38,位,DATE,日期型,RAW,纯二进制数据类型,最长为B,LONG RAW,变长二进制数据类型,最长为,2GB,BLOB,二进制大对象类型,最长为,4GB,NLOB,包含定宽多位数字符字符大对象类型,最长为4GB,CLOB,包含单个字符字符大对象类型,最长为4GB,BFILE,数据库外大型二进制文件输入指示器类型,最大为4GB,第15页,PL/SQL,

9、语言基础,注释,变量申明,运算符,PL/SQL,块结构,控制语句,第16页,PL/SQL,程序设计介绍,PL/SQL,是一个高级数据库程序设计语言,该语言专门用于在各种环境下对,ORACLE,数据库进行访问。因为该语言集成于数据库服务器中,所以,PL/SQL,代码能够对数据进行快速高效处理。除此之外,能够在,ORACLE,数据库一些客户端工具中,使用,PL/SQL,语言也是该语言一个特点。,第17页,SQL,与,PL/SQL,PL/SQL,是,Procedure Language&Structured Query Language,缩写。,ORACLE,SQL,是支持,ANSI(America

10、n national Standards Institute),和,ISO92(International Standards Organization),标准产品。,PL/SQL,是对,SQL,语言存放过程语言扩展。,第18页,为何使用,PL/SQL,有利于客户,/,服务器环境应用运行,适合于客户环境,第19页,PL/SQL,块结构,PL/SQL,程序由三个块组成,即申明部分、执行部分、异常处理部分。,DECLARE,/*,申明部分,:,在此申明,PL/SQL,用到变量,类型及游标,以及局部存放过程和函数*,/,BEGIN,/*,执行部分,:,过程及,SQL,语句,即程序主要部分 *,/,E

11、XCEPTION,/*,执行异常部分,:,错误处理 *,/,END;,第20页,PL/SQL,块能够分为三类,无名块:动态结构,只能执行一次。,子程序:存放在数据库中存放过程、函数及包等。当在数据库上建立好后能够在其它程序中调用它们。,触发器:当数据库发生操作时,会触发一些事件,从而自动执行对应程序。,第21页,标识符,PL/SQL,程序设计中标识符定义与,SQL,标识符定义要求相同。要求和限制有:,标识符名不能超出,30,字符;,第一个字符必须为字母;,不分大小写;,不能用,-(,减号,);,不能是,SQL,保留字。,第22页,实例,下面例子将会删除全部纪录,而不是,KING,统计。,DEC

12、LARE,v_ename varchar2(20):=KING;,BEGIN,DELETE FROM emp WHERE ename=v_ename;,END;,第23页,怎样运行,PL/SQL,块结构?,第24页,怎样运行,PL/SQL,块结构?,第25页,提议命名方法,第26页,PL/SQL,变量类型实例,插入一条统计并显示,DECLARE,Row_id ROWID;,info VARCHAR2(40);,BEGIN,INSERT INTO dept VALUES(90,SERVICE,BEIJING),RETURNING rowid,dname|:|to_char(deptno)|:|l

13、oc,INTO row_id,info;,DBMS_OUTPUT.PUT_LINE(ROWID:|row_id);,DBMS_OUTPUT.PUT_LINE(info);,END;,第27页,PL/SQL,变量类型实例,其中,,RETURNING,子句用于检索,INSERT,语句中所影响数据行数,当,INSERT,语句使用,VALUES,子句插入数据时,,RETURNING,子句还可将列表示式、,ROWID,和,REF,值返回到输出变量中。在使用,RETURNING,子句是应注意以下几点限制:,不能并行,DML,语句;,不能检索,LONG,类型信息;,当经过视图向基表中插入数据时,只能与单基表

14、视图一起使用。,第28页,PL/SQL,变量类型实例,修改一条统计并显示,DECLARE,Row_id ROWID;,info VARCHAR2(40);,BEGIN,UPDATE dept SET deptno=80 WHERE DNAME=SERVICE,RETURNING rowid,dname|:|to_char(deptno)|:|loc,INTO row_id,info;,DBMS_OUTPUT.PUT_LINE(ROWID:|row_id);,DBMS_OUTPUT.PUT_LINE(info);,END;,第29页,PL/SQL,变量类型实例,其中,,RETURNING,子句用

15、于检索被修改行信息,当,UPDATE,语句修改单行数据时,,RETURNING,子句能够检索被修改行,ROWID,值,以及行中被修改列列表示式,并可将他们存放到,PL/SQL,变量或复合变量中;当,UPDATE,语句修改多行数据时,,RETURNING,子句能够将被修改行,ROWID,值,以及列表示式值返回到复合变量数组中。在,UPDATE,中使用,RETURNING,子句限制与,INSERT,语句中对,RETURNING,子句限制相同。,第30页,PL/SQL,变量类型实例,删除一条统计并显示,DECLARE,Row_id ROWID;,info VARCHAR2(40);,BEGIN,DE

16、LETE dept WHERE DNAME=SERVICE,RETURNING rowid,dname|:|to_char(deptno)|:|loc,INTO row_id,info;,DBMS_OUTPUT.PUT_LINE(ROWID:|row_id);,DBMS_OUTPUT.PUT_LINE(info);,END;,第31页,PL/SQL,变量类型实例,RETURNING,子句用于检索被删除行信息,当,DELETE,语句修改单行数据时,,RETURNING,子句能够检索被删除行,ROWID,,以及被删除行中列列表示式,并可将他们存放到,PL/SQL,变量或复合变量中;当,UPDATE

17、语句修改多行数据时,,RETURNING,子句能够将被修改行,ROWID,,以及列表示式值返回到复合变量数组中。在,UPDATE,中使用,RETURNING,子句限制与,INSERT,语句中对,RETURNING,子句限制相同。,第32页,复合类型,ORACLE,在,PL/SQL,中除了提供象前面介绍各种类型外,还提供一个称为复合类型类型,-,统计和表。,统计类型,使用,%TYPE,使用,%ROWTYPE,第33页,统计类型,统计类型是把逻辑相关数据作为一个单元存放起来,它必须包含最少一个标量型(数字型、字符型、布尔型、日期型)或,RECORD,数据类型组员,称作,PL/SQL RECORD

18、域,(FIELD),,其作用是存放互不相同但逻辑相关信息。,第34页,定义统计类型语法以下,:,TYPE record_type IS RECORD(,Field1 type1 NOT NULL :=exp1,Field2 type2 NOT NULL :=exp2,.,Fieldn typen NOT NULL :=expn );,第35页,实例,DECLARE,TYPE test_rec IS RECORD(,Code VARCHAR2(10),Name VARCHAR2(30)NOT NULL:=a book);,V_book test_rec;,BEGIN,V_book.code:=

19、123;,V_book.name:=C+Programming;,DBMS_OUTPUT.PUT_LINE(v_book.code|v_book.name);,END;,第36页,使用,%TYPE,定义一个变量,其数据类型与已经定义某个数据变量类型相同,或者与数据库表某个列数据类型相同,这时能够使用,%TYPE,。,使用,%TYPE,特征优点在于:,所引用数据库列数据类型能够无须知道;,所引用数据库列数据类型能够实时改变。,第37页,实例,1,DECLARE,-用%TYPE 类型定义与表相配字段,TYPE t_Record IS RECORD(,T_no emp.empno%TYPE,T_na

20、me emp.ename%TYPE,T_sal emp.sal%TYPE);,-申明接收数据变量,v_emp t_Record;,BEGIN,SELECT empno,ename,sal INTO v_emp FROM emp WHERE empno=7788;,DBMS_OUTPUT.PUT_LINE,(TO_CHAR(v_emp.t_no)|v_emp.t_name|TO_CHAR(v_emp.t_sal);,END;,第38页,实例,2,DECLARE,v_empno emp.empno%TYPE:=,Type r_record is record(,v_name emp.ename%T

21、YPE,v_sal emp.sal%TYPE,v_date emp.hiredate%TYPE);,Rec r_record;,BEGIN,SELECT ename,sal,hiredate INTO Rec FROM emp WHERE empno=v_empno;,DBMS_OUTPUT.PUT_LINE(Rec.v_name|-|Rec.v_sal|-|Rec.v_date);,END;,第39页,使用,%ROWTYPE,PL/SQL,提供,%ROWTYPE,操作符,返回一个统计类型,其数据类型和数据库表数据结构相一致。,使用,%ROWTYPE,特征优点在于:,所引用数据库中列个数和数据

22、类型能够无须知道;,所引用数据库中列个数和数据类型能够实时改变。,第40页,实例,DECLARE,v_empno emp.empno%TYPE:=,rec emp%ROWTYPE;,BEGIN,SELECT*INTO rec FROM emp WHERE empno=v_empno;,DBMS_OUTPUT.PUT_LINE(姓名:|rec.ename|工资:|rec.sal|工作时间:|rec.hiredate);,END;,第41页,运算符和表示式,算术运算符,第42页,运算符和表示式,关系运算符,第43页,运算符和表示式,逻辑运算符,第44页,变量赋值,在,PL/SQL,编程中,变量赋值

23、是一个值得注意地方,它语法以下:,variable,是一个,PL/SQL,变量,expression,是一个,PL/SQL,表示式。,variable :=expression;,第45页,字符及数字运算特点,空值加数字仍是空值:,NULL+=NULL,空值加(连接)字符,结果为字符:,NULL|=,第46页,BOOLEAN,赋值,布尔值只有,TRUE,FALSE,及,NULL,三个值。如:,DECLARE,done BOOLEAN;,/*the following statements are legal:*/,BEGIN,done:=FALSE;,WHILE NOT done LOOP,N

24、ull;,END LOOP;,END;,第47页,游标赋值,游标赋值是经过,SELECT,语句来完成,每次执行,SELECT,语句就赋值一次,普通要求被赋值变量与,SELECT,中列名要一一对应。,第48页,游标赋值,DECLARE,emp_id emp.empno%TYPE:=7788;,emp_name emp.ename%TYPE;,wages emp.sal%TYPE;,BEGIN,SELECT ename,NVL(sal,0)+NVL(comm,0)INTO emp_name,wages,FROM emp WHERE empno=emp_id;,DBMS_OUTPUT.PUT_LIN

25、E(emp_name|-|to_char(wages);,END;,结果:,SCOTT-3000,第49页,可转换类型赋值,CHAR,转换为,NUMBER,:,使用,TO_NUMBER,函数来完成字符到数字转换,如:,v_total :=TO_NUMBER(100.0)+sal;,NUMBER,转换为,CHAR,:,使用,TO_CHAR,函数能够实现数字到字符转换,如:,v_comm:=TO_CHAR(123.45)|,元,;,字符转换为日期:,使用,TO_DATE,函数能够实现 字符到日期转换,如:,v_date:=TO_DATE(.07.03,yyyy.mm.dd);,日期转换为字符:,使

26、用,TO_CHAR,函数能够实现日期到字符转换,如:,v_to_day:=TO_CHAR(SYSDATE,yyyy.mm.dd hh24:mi:ss);,第50页,变量作用范围及可见性,PL/SQL,变量作用范围特点是:,变量作用范围是在你所引用程序单元(块、子程序、包)内。即从申明变量开始到该块结束。,一个变量(标识)只能在你所引用块内是可见。,当一个变量超出了作用范围,,PL/SQL,引擎就释放用来存放该变量空间(因为它可能不用了)。,在子块中重新定义该变量后,它作用仅在该块内。,第51页,实例,DECLARE,Emess char(80);,BEGIN,DECLARE,V1 NUMBER

27、4);,BEGIN,SELECT empno INTO v1 FROM emp WHERE LOWER(job)=president;,DBMS_OUTPUT.PUT_LINE(V1);,EXCEPTION,When TOO_MANY_ROWS THEN,DBMS_OUTPUT.PUT_LINE(More than one president);,END;,第52页,实例 续,DECLARE,V1 NUMBER(4);,BEGIN,SELECT empno INTO v1 FROM emp WHERE LOWER(job)=manager;,EXCEPTION,When TOO_MANY_R

28、OWS THEN,DBMS_OUTPUT.PUT_LINE(More than one manager);,END;,EXCEPTION,When others THEN,Emess:=substr(SQLERRM,1,80);,DBMS_OUTPUT.PUT_LINE(emess);,END;,第53页,注释,在,PL/SQL,里,能够使用两种符号来写注释,即:,使用双,-(,减号,),加注释,V_Sal NUMBER(12,2);-,工资变量。,使用,/*/,来加一行或多行注释,/*/,/*,文件名:,department_salary.sql */,/*/,第54页,示例 简单数据插入例

29、子,DECLARE,v_ename VARCHAR2(20):=Bill;,v_sal NUMBER(7,2):=1234.56;,v_deptno NUMBER(2):=10;,v_empno NUMBER(4):=8888;,BEGIN,INSERT INTO emp(empno,ename,JOB,sal,deptno,hiredate),VALUES(v_empno,v_ename,Manager,v_sal,v_deptno,TO_DATE(1954.06.09,yyyy.mm.dd);,COMMIT;,END;,第55页,示例 简单数据删除例子,DECLARE,v_empno nu

30、mber(4):=8888;,BEGIN,DELETE FROM emp WHERE empno=v_empno;,COMMIT;,END;,第56页,PL/SQL,流程控制语句,PL/SQL,流程控制语句包含以下三类:,控制语句:,IF,语句;,循环语句:,LOOP,语句,,EXIT,语句;,次序语句:,GOTO,语句,,NULL,语句。,第57页,条件语句,IF THEN,PL/SQL,和,SQL,语句,END IF;,IF THEN,PL/SQL,和,SQL,语句,ELSE,其它语句,END IF;,第58页,条件语句,IF THEN,PL/SQL,和,SQL,语句,ELSIF THEN

31、其它语句,ELSIF THEN,其它语句,ELSE,其它语句,END IF;,第59页,条件语句 实例,DECLARE,v_empno emp.empno%TYPE:=,V_salary emp.sal%TYPE;,V_comment VARCHAR2(35);,BEGIN,SELECT sal INTO v_salary FROM emp WHERE empno=v_empno;,IF v_salary1500 THEN,V_comment:=Fairly less;,ELSIF v_salary 3000 THEN,V_comment:=A little more;,ELSE,V_com

32、ment:=Lots of salary;,END IF;,DBMS_OUTPUT.PUT_LINE(V_comment);,END;,第60页,CASE,表示式,CASE selector,WHEN expression1 THEN result1,WHEN expression2 THEN result2,WHEN expressionN THEN resultN,ELSE resultN+1,END;,第61页,CASE,表示式 实例,DECLARE,V_grade char(1):=UPPER(,V_appraisal VARCHAR2(20);,BEGIN,V_appraisal:=

33、CASE v_grade,WHEN A THEN Excellent,WHEN B THEN Very Good,WHEN C THEN Good,ELSE No such grade,END;,DBMS_OUTPUT.PUT_LINE(Grade:|v_grade|Appraisal:|v_appraisal);,END;,第62页,CASE,表示式 实例,代码运行结果:,Enter value for p_grade:A,old 2:V_grade char(1):=UPPER(,new 2:V_grade char(1):=UPPER(A);,Grade:A Appraisal:Exc

34、ellent,第63页,循环,简单循环,LOOP,要执行语句,;,EXIT WHEN /*,条件满足,退出循环语句*,/,END LOOP;,第64页,LOOP,循环 实例,DECLARE,int NUMBER(2):=0;,BEGIN,LOOP,int:=int+1;,DBMS_OUTPUT.PUT_LINE(int,当前值为,:|int);,EXIT WHEN int=10;,END LOOP;,END;,第65页,循环,WHILE,循环,WHILE LOOP,要执行语句;,END LOOP;,第66页,WHILE,循环 实例,DECLARE,x NUMBER:=1;,BEGIN,WHIL

35、E x,标号是用,括起来标识符,GOTO label;,第71页,GOTO,和标签 实例,DECLARE,V_counter NUMBER:=1;,BEGIN,LOOP,DBMS_OUTPUT.PUT_LINE(V_counter当前值为:|V_counter);,V_counter:=v_counter+1;,IF v_counter 10 THEN,GOTO l_ENDofLOOP;,END IF;,END LOOP;,DBMS_OUTPUT.PUT_LINE(V_counter当前值为:|V_counter);,END;,第72页,NULL,语句,DECLARE,.,BEGIN,IF v

36、num IS NULL THEN,GOTO print1;,END IF;,NULL;-不需要处理任何数据。,END;,第73页,游标概念,为了处理,SQL,语句获取一个表中统计,,ORACLE,提供一个上下文,它提供了一个指向语句指针以及查询活动集,(active set),。游标是一个指向上下文句柄,(handle),或指针。经过游标,,PL/SQL,能够控制上下文区和处理语句时上下文区会发生些什么事情。,第74页,游标概念,对于不一样,SQL,语句,游标使用情况不一样:,第75页,处理显式游标,显式游标处理需四个,PL/SQL,步骤:,定义游标,格式:,CURSOR cursor_na

37、me IS select_statement;,打开游标,格式:,OPEN cursor_name;,提取游标数据,格式:,FETCH cursor_name INTO variable_list|record_variable;,关闭游标,格式:,CLOSE cursor_name;,第76页,示例,1,DECLARE,CURSOR c_cursor IS SELECT ename,sal FROM emp WHERE rownum11;,v_ename emp.ename%TYPE;,v_sal emp.sal%TYPE;,BEGIN,OPEN c_cursor;,FETCH c_curs

38、or INTO v_ename,v_sal;,WHILE c_cursor%FOUND LOOP,DBMS_OUTPUT.PUT_LINE(v_ename|-|to_char(v_sal);,FETCH c_cursor INTO v_ename,v_sal;,END LOOP;,CLOSE c_cursor;,END;,第77页,示例,2,DECLARE,DeptRec dept%ROWTYPE;,Dept_name dept.dname%TYPE;,Dept_loc dept.loc%TYPE;,CURSOR c1 IS,SELECT dname,loc FROM dept WHERE d

39、eptno=30;,CURSOR c2(dept_no NUMBER DEFAULT 10)IS,SELECT dname,loc FROM dept WHERE deptno=dept_no;,CURSOR c3(dept_no NUMBER DEFAULT 10)IS,SELECT*FROM dept WHERE deptno 20);,LOOP,FETCH c3 INTO deptrec;,EXIT WHEN c3%NOTFOUND;,DBMS_OUTPUT.PUT_LINE(deptrec.deptno|-|deptrec.dname|-|deptrec.loc);,END LOOP;

40、CLOSE c3;,END;,第79页,游标属性,%FOUND,布尔型属性,当最近一次读统计时成功返回,则值为,TRUE,;,%NOTFOUND,布尔型属性,与,%FOUND,相反;,%ISOPEN,布尔型属性,当游标已打开时返回,TRUE,;,%ROWCOUNT,数字型属性,返回已从游标中读取统计数。,第80页,示例,DECLARE,v_empno emp.empno%TYPE;,v_sal emp.sal%TYPE;,CURSOR c_cursor IS SELECT empno,sal FROM emp;,BEGIN,OPEN c_cursor;,LOOP,FETCH c_cursor

41、 INTO v_empno,v_sal;,EXIT WHEN c_cursor%NOTFOUND;,IF v_sal=1200 THEN,UPDATE emp SET sal=sal+50 WHERE empno=v_empno;,DBMS_OUTPUT.PUT_LINE(,编码为,|v_empno|,工资已更新,!);,END IF;,DBMS_OUTPUT.PUT_LINE(,统计数,:|c_cursor%ROWCOUNT);,END LOOP;,CLOSE c_cursor;,END;,第81页,游标,FOR,循环,FOR index_variable IN cursor_nameval

42、ue,value LOOP,-,游标数据处理代码,END LOOP;,第82页,游标中使用,FOR,循环示例,DECLARE,CURSOR c_sal IS SELECT empno,ename,sal FROM emp;,BEGIN,-,隐含打开游标,FOR v_sal IN c_sal LOOP,-,隐含执行一个,FETCH,语句,DBMS_OUTPUT.PUT_LINE(to_char(v_sal.empno)|-|,v_sal.ename|-|to_char(v_sal.sal);,-,隐含监测,c_sal%NOTFOUND,END LOOP;,-,隐含关闭游标,END;,第83页,有

43、参数游标中使用,FOR,循环示例,DECLARE,CURSOR c_cursor(dept_no NUMBER DEFAULT 10)IS,SELECT dname,loc FROM dept WHERE deptno 30),DBMS_OUTPUT.PUT_LINE(c1_rec.dname|-|c1_rec.loc);,END LOOP;,DBMS_OUTPUT.PUT_LINE(CHR(10)|,使用默认,dept_no,参数值,10,:,);,FOR c1_rec IN c_cursor LOOP,DBMS_OUTPUT.PUT_LINE(c1_rec.dname|-|c1_rec.l

44、oc);,END LOOP;,END;,第84页,游标,FOR,循环语句中使用子查询来实现游标 实例,BEGIN,FOR c1_rec IN(SELECT dname,loc FROM dept)LOOP,DBMS_OUTPUT.PUT_LINE(c1_rec.dname|-|c1_rec.loc);,END LOOP;,END;,第85页,处理隐式游标,当查询返回结果超出一行时,就需要一个显式游标。显式游标主要是用于对查询语句处理,尤其是在查询结果为多条统计情况下;而对于非查询语句,如修改、删除操作,则由,ORACLE,系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建游标称为隐

45、式游标,隐式游标名字为,SQL,,这是由,ORACLE,系统定义。对于隐式游标操作,如定义、打开、取值及关闭操作,都由,ORACLE,系统自动地完成,无需用户进行处理。用户只能经过隐式游标相关属性,来完成对应操作。在隐式游标工作区中,所存放数据是与用户自定义显示游标无关、最新处理一条,SQL,语句所包含数据。,第86页,处理隐式游标,格式调用为:,SQL%,当执行一条,DML,语句后,,DML,语句结果保留在四个游标属性中,这些属性用于控制程序流程或者了解程序状态。当运行,DML,语句时,,PL/SQL,打开一个内建游标并处理结果,游标是维护查询结果内存中一个区域,游标在运行,DML,语句时打

46、开,完成后关闭。,第87页,处理隐式游标,隐式游标只使用,SQL%FOUND,、,SQL%NOTFOUND,、,SQL%ROWCOUNT,三个属性,,SQL%FOUND,,,SQL%NOTFOUND,是布尔值,,SQL%ROWCOUNT,是整数值。,第88页,处理隐式游标,SQL%FOUND,,布尔型属性,当最近一次读统计时成功返回,则值为,TRUE,。在执行任何,DML,语句前,SQL%FOUND,和,SQL%NOTFOUND,值都是,NULL,,在执行,DML,语句后,,SQL%FOUND,属性值将是:,INSERT,为,TRUE,;,DELETE,和,UPDATE,,最少有一行被,DEL

47、ETE,或,UPDATE,为,TRUE,;,SELECT INTO,最少返回一行为,TRUE,;,SQL%FOUND,为,TRUE,时,SQL%NOTFOUND,为,FALSE,。,第89页,处理隐式游标 示例,DECLARE,V_deptno emp.deptno%TYPE:=,BEGIN,DELETE FROM emp WHERE deptno=v_deptno;,IF SQL%NOTFOUND THEN,DELETE FROM dept WHERE deptno=v_deptno;,END IF;,END;,第90页,异常错误处理,异常情况处理是用来处理正常执行过程中未预料事件,程序块异

48、常处理预定义错误和自定义错误,因为,PL/SQL,程序块一旦产生异常而没有指出怎样处理时,程序就会自动终止整个程序运行。,第91页,有三种类型异常:,预定义,(Predefined),异常,ORACLE,预定义异常情况大约有,24,个。对这种异常情况处理,无需在程序中定义,由,ORACLE,自动将其引发。,非预定义,(Predefined),异常,即其它标准,ORACLE,错误。对这种异常情况处理,需要用户在程序中定义,然后由,ORACLE,自动将其引发。,用户定义,(User_define),异常,程序执行过程中,出现编程人员认为非正常情况。对这种异常情况处理,需要用户在程序中定义,然后显式

49、地在程序中将其引发。,第92页,异常处理部分结构,EXCEPTION,WHEN first_exception THEN ,WHEN second_exception THEN ,WHEN OTHERS THEN ,END;,第93页,预定义异常处理,第94页,实例,DECLARE,v_empno emp.empno%TYPE:=,v_sal emp.sal%TYPE;,BEGIN,SELECT sal INTO v_sal FROM emp WHERE empno=v_empno;,IF v_sal=1500 THEN,UPDATE emp SET sal=sal+100 WHERE emp

50、no=v_empno;,DBMS_OUTPUT.PUT_LINE(,编码为,|v_empno|,员工工资已更新,!);,ELSE,DBMS_OUTPUT.PUT_LINE(,编码为,|v_empno|,员工工资已经超出要求值,!);,END IF;,EXCEPTION,WHEN NO_DATA_FOUND THEN,DBMS_OUTPUT.PUT_LINE(,数据库中没有编码为,|v_empno|,员工,);,WHEN TOO_MANY_ROWS THEN,DBMS_OUTPUT.PUT_LINE(,程序运行错误,!,请使用游标,);,WHEN OTHERS THEN,DBMS_OUTPUT.

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

关于我们      便捷服务       自信AI       AI导航        抽奖活动

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :微信公众号    抖音    微博    LOFTER 

客服