




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十九部分 oracle11g的PL/SQL基础目标理解 PL/SQL 功能和特点了解T/SQL和PL/SQL在语法上的差异了解PL/SQL中的数据类型及其用法了解oracle11g新增加的数据类型掌握oracle11g中对LOB类型进行操作的方法,即:如何把大文件保存到表BLOB列中,如何把大内容保存到表的CLOB列中。理解oracle11g的PL/SQL中对序列的改进,即无dual的序列的使用理解控制结构,了解oracle11g的continue语句掌握oracle11g中的错误处理PL/SQL 简介PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL
2、)结合而成的编程语言PL/SQL 是对 SQL 的扩展支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构可用于创建存储过程、触发器和程序包,给SQL语句的执行添加程序逻辑与 Oracle 服务器和 Oracle 工具紧密集成,具备可移植性、灵活性和安全性PL/SQL 的优点 2-1支持 SQL,在 PL/SQL 中可以使用:数据操纵命令事务控制命令游标控制SQL 函数和 SQL 运算符用户把PL/SQL块整个发送到服务器端,oracle服务器端编译、运行,再把结果返回给用户可移植性,可运行在任何操作系统和平台上的Oralce 数据库更佳的性能,PL/SQL 经过编译执行PL/SQ
3、L 的优点 2-2安全性,可以通过存储过程限制用户对数据的访问与 SQL 紧密集成,简化数据处理。支持所有 SQL 数据类型支持 NULL 值支持 %TYPE 和 %ROWTYPE 属性类型PL/SQL 的体系结构PL/SQL 引擎驻留在 Oracle 服务器中该引擎接受 PL/SQL 块并对其进行编译执行将PL/SQL 块发送给 Oracle 服务器用户执行过程语句引擎将 SQL 语句发送给SQL 语句执行器Oracle 服务器PL/SQL引擎SQL引擎 SQL语句执行器过程语句执行器执行 SQL 语句将结果发送给用户PL/SQL 块简介PL/SQL 块是构成 PL/SQL 程序的基本单元将
4、逻辑上相关的声明和语句组合在一起PL/SQL 分为三个部分,声明部分、可执行部分和异常处理部分 DECLARE declarations BEGIN executable statements EXCEPTION handlers END;变量和常量 1-2 PL/SQL 块中可以使用变量和常量在声明部分声明,使用前必须先声明声明时必须指定数据类型,每行声明一个标识符在可执行部分的 SQL 语句和过程语句中使用声明变量和常量的语法:identifier CONSTANT datatype NOT NULL := | DEFAULT expr;给变量赋值有两种方法:使用赋值语句 :=使用 SEL
5、ECT INTO 语句变量和常量 2-2DECLARE icode VARCHAR2(6); p_catg VARCHAR2(20); p_rate NUMBER; c_rate CONSTANT NUMBER := 0.10;BEGIN . icode := i205; SELECT p_category, itemrate * c_rate INTO p_catg, p_rate FROM itemfile WHERE itemcode = icode; .END;数据类型PL/SQL 支持的内置数据类型数据类型LOB类型标量类型属性类型%ROWTYPE数字字符布尔型日期时间BFILEBL
6、OBCLOBNCLOB%TYPE提供某个变量或数据库表列的数据类型提供表示表中一行的记录类型 存储非结构化数据块数字数据类型1指定数值的存储格式数字数据类型NUMBERBINARY_INTEGERPLS_INTEGERNATURALNATURALLNPOSITIVEPOSITIVENDECIMALFLOATINTEGERREALSIGNTYPE存储有符号整数,所需存储空间少于NUMBER类型值存储整数、实数和浮点数存储有符号整数,可使算术计算快速而有效数字数据类型2oracle11g新增的数据类型 Oracle11g推出了一个新的数据类型SIMPLE_INTEGER,这种数据类型的取值范围为2
7、147483 648 7,数据类型不为空。 对于此数据类型,Oracle可以将这个数据类型的操作直接作用于硬件,从而提高性能。字符数据类型字符数据类型包括:CHARVARCHAR2LONGRAWLONG RAWPL/SQL 的数据类型与 SQL数据类型的比较数据类型SQL类型PL/SQL类型CHAR1.20001.32767LONG1.2GB1.32760LONG RAW1.2GB1.32760RAW1.20001.32767VARCHAR21.40001.32767日期时间和布尔数据类型日期时间类型存储日期和时间数据常用的两种日期时间类型DATETIMESTAMP布尔数据类型此类别只有一种类
8、型,即BOOLEAN类型用于存储逻辑值(TRUE、FALSE和NULL)不能向数据库中插入BOOLEAN数据不能将列值保存到BOOLEAN变量中只能对BOOLEAN变量执行逻辑操作LOB 数据类型 2-1用于存储大文本、图像、视频剪辑和声音剪辑等非结构化数据。LOB 数据类型可存储最大 4GB的数据。LOB 类型包括:BLOB 将大型二进制对象存储在数据库中CLOB 将大型字符数据存储在数据库中NCLOB 存储大型UNICODE字符数据BFILE 将大型二进制对象存储在操作系统文件中LOB 数据类型 2-2LOB 类型的数据库列仅存储定位符,该定位符指向大型对象的存储位置DBMS_LOB程序包
9、用于操纵 LOB 数据SET SERVEROUTPUT ONDECLARE clob_var CLOB; amount INTEGER; offset INTEGER; output_var VARCHAR2(100);BEGIN SELECT chapter_text INTO clob_var FROM my_book_text WHERE chapter_id=5; amount := 24; - 要读取的字符数 offset := 1; - 起始位置 DBMS_LOB.READ(clob_var,amount,offset,output_var); DBMS_OUTPUT.PUT_LI
10、NE(output_var);END;/从表中选择 CLOB 定位符到 clob_var变量中从CLOB数据中读取24个字符存储到 output_var 变量中显示读到的信息属性类型用于引用数据库列的数据类型,以及表示表中一行的记录类型属性类型有两种:%TYPE - 引用变量和数据库列的数据类型%ROWTYPE - 提供表示表中一行的记录类型使用属性类型的优点:不需要知道被引用的表列的具体类型如果被引用对象的数据类型发生改变,PL/SQL 变量的数据类型也随之改变,健壮性oracle11g的PL/SQL对序列的改进 在PL/SQL中取出序列的nextval、currval时,可以不使用sele
11、ct语句,可以类似: declare aa int; begin aa := seq1.nextval; dbms_output.put_line(aa的值是: | aa ); end;逻辑比较逻辑比较用于比较变量和常量的值,这些表达式称为布尔表达式布尔表达式由关系运算符与变量或常量组成布尔表达式的结果为TRUE、FALSE或NULL,通常由逻辑运算符AND、OR和NOT连接布尔表达式有三种类型:数字布尔型字符布尔型日期布尔型控制结构PL/SQL 支持的流程控制结构:条件控制IF 语句CASE 语句循环控制LOOP 循环WHILE 循环FOR 循环顺序控制GOTO 语句NULL 语句条件控制
12、2-1IF 语句根据条件执行一系列语句,有三种形式:IF-THEN、IF-THEN-ELSE 和 IF-THEN-ELSIF条件控制 2-2CASE 语句用于根据单个变量或表达式与多个值进行比较执行CASE 语句前,先计算选择器的值循环控制循环控制用于重复执行一系列语句循环控制语句包括:LOOP、EXIT 和 EXIT WHEN 、FOR 、WHILE循环控制的三种类型:LOOP - 无条件循环WHILE - 根据条件循环FOR - 循环固定的次数LOOP sequence_of_statementsEND LOOP;WHILE condition LOOP sequence_of_state
13、mentsEND LOOP;FOR counter IN REVERSE value1.value2LOOP sequence_of_statementsEND LOOP;oracle11g中的continue的使用 oracle11g新增了continue语句,可在循环中使用。该语句可将逻辑移到循环结尾,然后再移到循环开头。 例如:declare j number:=1;begin loop j:=j+1; exit when j8; continue when j4; dbms_output.put_line(to_char(j)|-); end loop;end;顺序控制顺序控制用于按顺
14、序执行语句顺序控制语句包括:GOTO 语句 - 无条件地转到标签指定的语句NULL 语句 - 什么也不做的空语句动态 SQL动态 SQL 是指在PL/SQL程序执行时生成的 SQL 语句编译程序对动态 SQL 不做处理,而是在程序运行时动态构造语句、对语句进行语法分析并执行DDL 语句命令和会话控制语句不能在 PL/SQL 中直接使用,但是可以通过动态 SQL 来执行执行动态 SQL 的语法: EXECUTE IMMEDIATE dynamic_sql_string INTO define_variable_list USING bind_argument_list;错误处理1在运行程序时出现
15、的错误叫做异常发生异常后,语句将停止执行,控制权转移到 PL/SQL 块的异常处理部分异常有两种类型:预定义异常 - 当 PL/SQL 程序违反 Oracle 规则或超越系统限制时隐式引发用户定义异常 - 用户可以在 PL/SQL 块的声明部分定义异常,自定义的异常通过 RAISE 语句显式引发错误处理2处理预定义异常处理用户定义异常DECLARE ordernum VARCHAR2(5);BEGIN SELECT orderno INTO ordernum FROM order_master;EXCEPTION WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE (返回多行);END;DECLARE invalidCATEGORY EXCEPTION; category VARCHAR2(10);BEGIN category := &Category; IF category NOT IN (附件,顶盖,备件) THEN RAISE invalidCATEGORY; ELSE DBMS_OUTPUT.PUT_LINE(您输入的类别是| category); END
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村镇广告工程合同范本
- 2025至2030年中国瓦楞隔档数据监测研究报告
- 石墨产业市场趋势与商业机会挖掘
- 员工年终个人工作总结合集八篇
- 彩绘施工合同范本
- 护士长季度工作总结简短(合集十篇)
- 科技改变零售电子商务的崛起与挑战
- 电箱合同范本
- 2025年02月烟台市莱山区事业单位工作人员(5人)笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 简单电工合同范本
- AMDAR资料的分析和应用
- 高新技术企业认定申请书样例与说明
- 数据结构英文教学课件:chapter6 Tree
- 高压氧科工作总结高压氧科个人年终总结.doc
- 《政治学概论》教学大纲
- 桥梁缺陷与预防
- 食品生物化学习题谢达平(动态)
- 新苏教版小学科学三年级下册全册教案(2022年春修订)
- 保安员工入职登记表
- 睿达RDCAM激光雕刻切割软件V5.0操作说明书
- 机械设计基础平面连杆机构课件
评论
0/150
提交评论