PLSQL开发精.pptx
《PLSQL开发精.pptx》由会员分享,可在线阅读,更多相关《PLSQL开发精.pptx(52页珍藏版)》请在咨信网上搜索。
1、2024/9/6 周五*第八章 PL/Sql开发 2024/9/6 周五*本章要点lPL/SQL基本概念 lPL/SQL的变量 lPL/SQL的基本语法 lOracle各种程序单元 l使用游标取出多条数据 l异常处理 2024/9/6 周五*PL/SQL概述l什么是PL/SQLlPL/SQL也是一种程序语言,被称作支持SQL的程序语言(Program Language),是Oracle数据库对SQL语句的扩展,在普通的SQL语言中增加了编程语言的特点l数据操作和查询语句被包含在PL/SQL代码的过程性单元中,经过逻辑判断、循环等操作完成复杂的功能或者计算2024/9/6 周五*PL/SQL的优
2、点l使用PL/SQL可以编写具有很多高级功能的程序,虽l然这些功能可以通过多个SQL语句来完成同样的功l能,但是PL/SQL具有如下的优点:l使一组语句功能形成模块化程序开发l使用过程性语言控制程序结构l可以对程序中的错误进行处理l具有较好的可移植性l集成在数据库中,调用更快l减少了网络的交互,有助于提高程序性能2024/9/6 周五*PL/SQL提供的新特性lPL/SQL提供了一些新的特性,可以进行复杂的信息处理l软件包l触发器l存储过程l函数l异常处理lPL/SQL可以使用所有的SQL数据操作,游标控制和事务控制命令,以及所有的SQL函数和运算符.PL/SQL完全支持SQL数据类型2024
3、/9/6 周五*SQL,SQL*PLUS,PL/SQL之间的关系l可以把oracle数据库看作餐馆的厨房,而SQL*PLUS是将菜单(脚l本,命令或程序)送进厨房(即数据库)的服务员.在厨房中有两l个厨师,SQL 和PL/SQL.作为服务员的SQL*PLUS知道它可以l处理那些命令,那些命令要交给厨师处理.l在SQL*PLUS提示符下输入的执行命令或程序就象顾客点的l菜.对于每个顾客点的菜,厨师都知道如何进行处理,就像在厨l师心中的菜谱一样,PL/SQL也存储常用命令的食谱(这些元素l称为触发器,存储函数,存储过程,软件包).l有些大菜需要多个厨师共同处理,大多数的程序都是结合了lSQL和PL
4、/SQL,并在他们之间来回的传递信息,从而处理脚本或程l序.顾客点的菜作好之后,再由作为服务员的SQL*PLUS将执行的结l果显示给用户2024/9/6 周五*PL/SQL提高了性能DatabaseDatabaseSQLSQLSQLSQLSQLIF.THENSQLELSESQLEND IF;SQL应用程序应用程序应用程序应用程序2024/9/6 周五*PL/SQL块的基本结构lPL/SQL中起作用的部分都是由基本块组成的.基本块有四个l组成部分l声明部分声明部分:DECLARE 可选部分变量、常量、游标、用户定义异常声明l执行体开始部分执行体开始部分:BEGIN 必要部分SQL语句PL/SQL
5、语句l异常处理部分异常处理部分:EXCEPTION 可选部分程序出现异常时,捕捉异常并处理异常l执行体结束执行体结束:END;必要部分2024/9/6 周五*PL/SQL块例子lDECLAREl v_dept_id employees.department_id%TYPE;lBEGINl SELECT department_id INTO v_dept_idl FROM employeesl WHERE employee_id=100;l DELETE departmentsl WHERE department_id=v_dept_id;l COMMIT;lEXCEPTIONl WHEN OT
6、HERS THENl ROLLBACK;l INSERT INTO exception_table(message)l VALUES(Some error occurred in the database.);l COMMIT;lEND;2024/9/6 周五*PL/SQL环境PL/SQLBlockPL/SQL 引擎引擎oracle 数据库数据库PL/SQLBlockProceduralStatementExecutornon-SQLSQLSQL Statement ExecutorSQL 引擎引擎在数据库执行PL/SQL程序的时候,PL/SQL语句和SQL语句被分别解析和执行的。PL/SQL
7、块被数据库内部的PL/SQL引擎提取,将SQL语句取出送给Oralce的SQL引擎。两种语句分别在两种引擎中分析处理,在数据库内部完成数据交互,处理的过程2024/9/6 周五*在PL/SQL中处理变量l在声明部分在声明部分声明和初始化变量l在执行部分在执行部分为变量赋新值,或在表达式中使用变量l在异常处理部分也可以使用变量l通过参数把值传递到PL/SQL 块中l通过输出变量或者参数将值传出PL/SQL块2024/9/6 周五*声明变量和常量:语法l定义的标示符名称应遵循命名规则l在声明常量和变量的时候可以为其设置初始化值,也可以设置NOT NULLl可以使用赋值运算符(:=)或者DEFAUL
8、T保留字来初始化标识符l在声明时,每行只能声明一个标识符identifier CONSTANT datatype NOT NULL :=|DEFAULT expr;例如例如:v_total_sal NUMBER(9,2):=0;c_tax_rateCONSTANT NUMBER(3,2):=8.25;v_genderCHAR(1);v_validBOOLEAN NOT NULL:=TRUE;2024/9/6 周五*PL/Sql中的变量类型l简单变量l复合(组合)变量l外部变量2024/9/6 周五*简单变量l简单变量不包括任何组件,只能保存一个值l基本类型包括三大类:字符,数字,日期BINAR
9、Y_INTEGER 整形数字NUMBER(precision,scale)数字类型CHAR(maximum_length)定长字符类型VARCHAR2(maximum_length)变长字符类型DATE 日期类型LONG 长字符类型LONG RAW 长二进制类型CLOB/BLOB/BFILE 大对象类型(字符大对象,二 进制大对象,操作系统文件大对象)BOOLEAN 布尔类型,有效值为 TRUE,FALSE,NULL 2024/9/6 周五*简单变量的声明lv_genderCHAR(1);lv_countBINARY_INTEGER:=0;lv_total_salNUMBER(9,2):=0;
10、lv_order_dateDATE:=SYSDATE+7;lc_tax_rate CONSTANT NUMBER(3,2):=8.25;lv_validBOOLEAN NOT NULL:=TRUE;2024/9/6 周五*复合数据类型l复合变量也叫做组合变量复合变量也叫做组合变量.在复合变量中包含多个内部的组件,每个组件都可以单独存放值.一个复合变量可以存放多个值l与简单变量类型不同,复合变量类型不是数据库中已经存在的数据类型,所以复合变量在声明类型之前,首先要创建使用到的复合类型,然后将变量声明为复合变量l复合数据类型:PL/SQL TABLES 表类型PL/SQL RECORDS 记录类型
11、复合类型被创建后,可以被使用多次定义多个变量2024/9/6 周五*复合数据类型-TABLEl表类型类似于其他编程语言中的数组类型l由两个组件组成:数据类型为BINARY_INTEGER(整形数字)的主键数据类型为一个确定的简单类型的列lTable类型没有长度限制,可以动态增长.表类型中的第二部分类似与数组中的值,这个部分必须是一个已经确定的简单类型,不能是其他的复合类型l表类型的结构很像数组.第一部分使一个按1递增的整形数字,起到数字索引的作用,第二部分使一种确定的简单类型,用来存放每个索引号对应的具体的数值2024/9/6 周五*PL/SQL TABLE 结构l 主键列l .l 1Jone
12、sl 2Smithl 3Madurol .lBINARY_INTEGER标量2024/9/6 周五*声明一个PL/SQL TABLEl TYPE type_name IS TABLE OF scalar_datatypelNOT NULL INDEX BY BINARY_INTEGER;l identifiertype_name;.TYPE name_table_type IS TABLE OF VARCHAR2(16)INDEX BY BINARY_INTEGER;v1_namename_table_type;v2_namename_table_type;.语法:语法:例子:例子:2024/
13、9/6 周五*PL/SQL RECORDSl复合类型中的RECODES类型是由多个组件组成的一种类型.包含一个或几个组件,每个组件称为一个域(FIELD),域的数据类型可以是简单变量类型、另一个RECORD类型或PL/SQL的TABLE类型 l在使用RECORD变量时把多个域的集合作为一个逻辑单元使用,对记录类型变量赋值或引用,都需要使用“记录变量记录变量名名.域名域名”的方式来实现l主要用于从表中取出查询到的行数据2024/9/6 周五*PL/SQL RECORD结构l记录类型可以包含一个或多个域,每个域相当于记录类型变量的一个属性.在使用记录变量类型时,实际上是对记录类型变量的属性进行操作
14、.每个域都可以是不同的数据类型,存放不同类型的数据Field1(数据类型数据类型)Field2(数据类型数据类型)Field3(数据类型数据类型)2024/9/6 周五*声明PL/SQL RECORDl语法:语法:lTYPE type_name IS RECORDl(field_name1 field_typelNOT NULL:=|DEFAULT expr,l field_name2 field_typelNOT NULL:=|DEFAULT expr,.);l identifiertype_name;l例子:例子:l.l TYPE emp_record_type IS RECORDl (l
15、ast_name VARCHAR2(25),l first_name VARCHAR2(25),l salNUMBER(8)l );l emp_record emp_record_type;l.2024/9/6 周五*%TYPE与%ROWTYPEl除了象前面那样直接为变量声明一个确定的简单类型或者已经创建好的复合类型外,PL/SQL也支持另外的两种声明变量类型的方法,通红%TYPE和%ROWTYPE属性来声明变量类型2024/9/6 周五*%TYPE 属性l通过%TYPE属性声明一个变量,变量将遵循下面的类型声明:一个已经声明过的变量类型一个数据库中的表的字段定义通过%TYPE类型声明新变量的
16、类型,实际上就是将参照的变量或表中的字段类型作为新变量的类型,新变量的类型与它所参照的类型完全相同,并且保持同步l可以作为%TYPE的前缀的可以是数据库表和列前面声明的变量名称lPL/SQL在运行程序时确定变量的数据类型和大小2024/9/6 周五*%TYPE属性:例子l使用%TYPE 属性的好处:l可能不知道数据库中字段的数据类型l数据库中字段的数据类型可以在运行时已被改变l和前面声明过的变量的类型保持一致.v_last_names_emp.last_name%TYPE;v_first_name s_emp.first_name%TYPE;v_balanceNUMBER(7,2);v_min
17、imum_balancev_balance%TYPE:=10;.2024/9/6 周五*%ROWTYPE属性l与%TYPE作用类似,用于定义不确定的类型l变量类型将定义为由数据库的表的字段集合构成的RECORD类型l%ROWTYPE的前缀是数据库的表名,或者另一个已经定义好的RECORD变量lRECORD中的域,与表的字段的名称,个数,数据类型,以及长度完全相同,可以用来存放从表中取出的一条记录的所有的字段值(select*from 表)2024/9/6 周五*%ROWTYPE 属性:优点l数据库中表字段的数据类型和数目可能不知道l数据库中表字段的个数和数据类型会在运行中改变.dept_rec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLSQL 开发
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。