Oracle第14章PLSQL语言基础.pptx
《Oracle第14章PLSQL语言基础.pptx》由会员分享,可在线阅读,更多相关《Oracle第14章PLSQL语言基础.pptx(187页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Oracle10g 数据库基础教程1第第14章章 PL/SQL语言基础语言基础Oracle10g 数据库基础教程2本章内容本章内容pPL/SQL概述pPL/SQL基础p控制结构p游标p异常处理Oracle10g 数据库基础教程3本章要求本章要求p掌握PL/SQL程序基本结构p掌握PL/SQL程序控制结构p掌握PL/SQL程序游标应用p掌握PL/SQL程序异常处理机制Oracle10g 数据库基础教程414.1 PL/SQL概述概述pPL/SQL特点pPL/SQL功能特性pPL/SQL执行过程与开发工具Oracle10g 数据库基础教程514.1.1 PL/SQL特点特点p与SQL语言紧密集成。
2、p减小网络流量,提高应用程序的运行性能。p模块化的程序设计功能,提高了系统可靠性。p服务器端程序设计,可移植性好。Oracle10g 数据库基础教程614.1.2 PL/SQL功能特性功能特性p语句块结构p异常处理p变量和类型p条件语句p循环结构p游标p过程、函数和触发器p包p集合p动态SQLp批绑定p对象特性Oracle10g 数据库基础教程714.1.3 PL/SQL执行过程与开发工具执行过程与开发工具PL/SQL块SQL语句客户端应用程序PL/SQL引擎数据库服务器过程化语句执行器SQL执行器块中SQL语句pPL/SQL执行过程 Oracle10g 数据库基础教程8pPL/SQL开发工具
3、nSQL*PLUSnProcedure BuildernOracle Form、Oracle ReportsnPL/SQL DeveloperOracle10g 数据库基础教程914.2 PL/SQL基础基础pPL/SQL程序结构 p词法单元 p数据类型p变量与常量pPL/SQL记录 p编译指示pPL/SQL中的SQL语句Oracle10g 数据库基础教程1014.2.1 PL/SQL程序结构程序结构pPL/SQL块的组成pPL/SQL块分类 Oracle10g 数据库基础教程11(1)PL/SQL块的组成块的组成pPL/SQL程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成的。
4、p一个完整的PL/SQL语句块由3个部分组成。Oracle10g 数据库基础教程12p声明部分n主要用于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)子程序定义等。p可执行部分n执行部分是PL/SQL块的功能实现部分。该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务控制、游标处理等实现块的功能。p异常处理部分n异常处理部分用于处理该块执行过程中产生的异常。异常处理部分用于处理该块执行过程中产生的异常。Oracle10g 数据库基础教程13p注意:n执行部分是必须的,而声明部分和异常部分是可选的执行部分是必须的,而声明部分和异常部分是可选的n可以在一个块的执行部分或
5、异常处理部分嵌套其他的可以在一个块的执行部分或异常处理部分嵌套其他的PL/SQL块;块;n所有的所有的PL/SQL块都是以块都是以“END;”结束。结束。Oracle10g 数据库基础教程14pDECLAREp v_ename VARCHAR2(10);pBEGINp SELECT ename INTO v_ename FROM emp p WHERE empno=7844;p DBMS_OUTPUT.PUT_LINE(v_ename);pEXCEPTIONp WHEN NO_DATA_FOUND THENp DBMS_OUTPUT.PUT_LINE(There is not such a e
6、mployee);pEND;Oracle10g 数据库基础教程15pDECLAREp v_sal NUMBER(6,2);p v_deptno NUMBER(2);pBEGIN p BEGINp SELECT deptno INTO v_deptno FROM emp p WHERE empno=7844;p END;p SELECT avg(sal)INTO v_sal FROM emp p WHERE deptno=v_deptno;p DBMS_OUTPUT.PUT_LINE(v_sal);pEND;Oracle10g 数据库基础教程16p注意n若要在若要在SQL*Plus环境中看到环境
7、中看到DBMS_OUTPUT.PUT_LINE方法的输出结果,必方法的输出结果,必须将环境变量须将环境变量SERVEROUTPUT设置为设置为ON。nSET SERVEROUTPUT ONOracle10g 数据库基础教程17(2)PL/SQL块分类块分类p匿名块n匿名块是指动态生成,只能执行一次的块,不匿名块是指动态生成,只能执行一次的块,不能由其他应用程序调用。能由其他应用程序调用。p命名块n命名块是指一次编译可多次执行的命名块是指一次编译可多次执行的PL/SQL程程序,包括函数、存储过程、包、触发器等。它序,包括函数、存储过程、包、触发器等。它们编译后放在服务器中,由应用程序或系统在们编
8、译后放在服务器中,由应用程序或系统在特定条件下调用执行。特定条件下调用执行。Oracle10g 数据库基础教程18p命名块示例nCREATE OR REPLACE PROCEDURE showavgsal n(p_deptno NUMBER)nASn v_sal NUMBER(6,2);nBEGINn SELECT avg(sal)INTO v_sal FROM emp n WHERE deptno=p_deptno;n DBMS_OUTPUT.PUT_LINE(v_sal);nEND showavgsal;Oracle10g 数据库基础教程1914.2.2 词法单元词法单元p字符集p标识符p
9、分隔符p常量值p注释Oracle10g 数据库基础教程20(1)字符集)字符集pPL/SQL的字符集包括:n大小写字母:大小写字母:AZAZ,azazn数字:数字:0909n空白:制表符、空格和回车空白:制表符、空格和回车n数字符号:数字符号:+-*/+-*/=n标点符号:标点符号:!#$%&*()()_|?;:,.“p注意nPL/SQL字符集不区分大小写。字符集不区分大小写。Oracle10g 数据库基础教程21(2)标识符)标识符p标识符用于定义PL/SQL变量、常量、异常、游标名称、游标变量、参数、子程序名称和其他的程序单元名称等。p在PL/SQL程序中,标识符是以字母开头的,后边可以跟
10、字母、数字、美元符号($)、井号(#)或下划线(_),其最大长度为30个字符,并且所有字符都是有效的。n例如,例如,X,v_empno,v_$等都是有效的标识符,等都是有效的标识符,而而X+y,_temp则是非法的标识符。则是非法的标识符。p注意n如果标识符区分大小写、使用预留关键字或包含空格如果标识符区分大小写、使用预留关键字或包含空格等特殊符号,则需要用等特殊符号,则需要用“”“”括起来,称为引证标识符。括起来,称为引证标识符。例如标识符例如标识符“my book”和和“exception”。Oracle10g 数据库基础教程22(3)分隔符)分隔符p+p-p*p/p=p:=pp=pp!=
11、p=p=p(p)p/*p*/pp%p;p:p.pp“p.pp|p=p*p-p分隔符是指有特定含义的单个符号或组合符号 Oracle10g 数据库基础教程23(4)常量值)常量值p字符型文字n以单引号引起来的字符串,在字符串中的字符区分大以单引号引起来的字符串,在字符串中的字符区分大小写。如果字符串中本身包含单引号,则用两个连续小写。如果字符串中本身包含单引号,则用两个连续的单引号进行转义。的单引号进行转义。p数字型文字n分为整数与实数两类。其中,整数没有小数点,如分为整数与实数两类。其中,整数没有小数点,如123;而实数有小数点,如;而实数有小数点,如123.45。可以用科学计。可以用科学计数
12、法表示数字型文字,如数法表示数字型文字,如123.45可以表示为可以表示为1.2345E2。p布尔型文字n预定义的布尔型变量的取值,包括预定义的布尔型变量的取值,包括TRUE,FALSE,NULL三个值。三个值。p日期型文字n表示日期值,其格式随日期类型格式不同而不同。表示日期值,其格式随日期类型格式不同而不同。Oracle10g 数据库基础教程24(5)注释)注释p单行注释n-p多行注释n以以“/*”开始,以开始,以“*/”结束。结束。pDECLARE v_department CHAR(10);-variable to hold the department name BEGIN /*qu
13、ery the department name which department number is 10 ouput the department name into v_department*/SELECT dname INTO v_department FROM dept WHERE deptno=10;END;Oracle10g 数据库基础教程2514.2.3 数据类型数据类型p数字类型p字符类型p日期/区间类型p行标识类型p布尔类型p原始类型pLOB类型p引用类型 p记录类型p集合类型p%TYPE与与%ROWTYPEOracle10g 数据库基础教程26PL/SQL中常用的基本数据类
14、型分类数据类型数字类型NUMBER、BINARY_NUMBER PLS_NUMBER字符类型VARCHAR2、CHAR、LONG、NCHAR、NVARCHAR日期/区间类型 DATE、TIMESTAMP、INTERVAL行标识类型ROWID、UROWID布尔类型BOOLEAN(TRUE、FALSE、NULL)原始类型RAW、LONG RAWLOB类型CLOB、BLOB、NCLOB、BFILE引用类型 REF CURSOR,REF object_type。记录类型RECORD集合类型TABLE、VARRAYOracle10g 数据库基础教程27p数字类型 nNUMBER类型以十进制形式存储整数和
15、浮点数,语法类型以十进制形式存储整数和浮点数,语法为为NUMBER(p,s)。其中,)。其中,p为精度,即所有有效为精度,即所有有效数字位数;数字位数;s为刻度范围,即小数位数。为刻度范围,即小数位数。p的取值范围的取值范围为为138。nBINARY_INTEGER类型用于表示从类型用于表示从-2147483647+2147483647之间的整数,以之间的整数,以二进制形式存储。当发生溢出时,将自动转换成二进制形式存储。当发生溢出时,将自动转换成NUMBER类型。类型。nPLS_INTEGER类型表示范围与类型表示范围与BINARY_INTEGER相同,但发生溢出时会产生错相同,但发生溢出时会
16、产生错误。误。Oracle10g 数据库基础教程28p字符类型 nPL/SQL中的字符类型与中的字符类型与Oracle数据库中的字符类型数据库中的字符类型类似,但是允许字符串的长度有所不同。类似,但是允许字符串的长度有所不同。nVARCHAR2,CHAR主要用于存储来自本地数据库字主要用于存储来自本地数据库字符集的字符,而符集的字符,而NCHAR,NVARCHAR2 用于存储来用于存储来自国家字符集的字符串。自国家字符集的字符串。类 型PL/SQL中最大字节数Oracle中最大字节数VARCHAR2327674000NVARCHAR2327674000CHAR327672000NCHAR327
17、672000LONG327602GBOracle10g 数据库基础教程29p日期/区间类型 nDATE:与数据库中的:与数据库中的DATE类型相同,存储日期和时类型相同,存储日期和时间信息,包括世纪、年、月、日、小时、分和秒,不间信息,包括世纪、年、月、日、小时、分和秒,不包括秒的小数部分。包括秒的小数部分。nTIMESTAMP:与:与DATE类型相似,但包括秒的小数类型相似,但包括秒的小数部分,有以下部分,有以下3种形式。种形式。pTIMESTAMP(p):其中:其中p为秒字段的小数部分精度。为秒字段的小数部分精度。pTIMESTAMP(p)WITH TIME ZONE:返回当前时区:返回当
18、前时区的时间戳。的时间戳。pTIMESTAMP(p)WITH LOACL TIME ZONE:返回:返回数据库时区的时间戳。数据库时区的时间戳。Oracle10g 数据库基础教程30nINTERVAL:用于存储两个时间戳之间的时间间隔,:用于存储两个时间戳之间的时间间隔,有下面两种形式。有下面两种形式。pINTERVAL YEAR(p)TO MONTH:两个时间戳相差:两个时间戳相差的年数和月数。的年数和月数。pINTERVAL DAY(dp)TO SECOND(sp):两个时:两个时间戳相差的天数和秒数。间戳相差的天数和秒数。Oracle10g 数据库基础教程31p行标识类型nROWID表示
19、行的物理地址表示行的物理地址nUROWID既可以表示行的物理地址,也可以表示行的逻既可以表示行的物理地址,也可以表示行的逻辑地址。辑地址。p布尔类型(BOOLEAN)n只能在只能在PL/SQL中使用,其取值为逻辑值,包括中使用,其取值为逻辑值,包括TRUE、FALSE、NULL。p原始类型n与与Oracle数据库中的原始类型相似,但子节数不同。数据库中的原始类型相似,但子节数不同。类 型PL/SQL中最大字节数Oracle中最大字节数RAW327672000LONG RAW327672GOracle10g 数据库基础教程32pLOB类型n包括包括BLOB,CLOB,NCLOB和和BFILE四种
20、类型。四种类型。其中其中BLOB存放二进制数据,存放二进制数据,CLOB,NCLOB存放文存放文本数据,而本数据,而BFILE存放指向操作系统文件的指针。存放指向操作系统文件的指针。nLOB类型变量可以存储类型变量可以存储4 GB的数据量。的数据量。p引用类型n引用类型类似于其他高级语言中的指针类型。在引用类型类似于其他高级语言中的指针类型。在PL/SQL中,引用类型包括游标的引用类型和对象的中,引用类型包括游标的引用类型和对象的引用类型,即引用类型,即REF CURSOR和和REF object_type。Oracle10g 数据库基础教程33p记录类型n记录类型是复合类型,类似于记录类型是
21、复合类型,类似于C语言中的结构体,是一语言中的结构体,是一个包含若干个成员分量的复合类型。个包含若干个成员分量的复合类型。n在使用记录类型时,需要先在声明部分定义记录类型在使用记录类型时,需要先在声明部分定义记录类型和记录类型的变量,然后在执行部分引用该记录类型和记录类型的变量,然后在执行部分引用该记录类型变量或其成员分量。变量或其成员分量。p集合类型n集合类型是复合类型,包括索引表类型、嵌套表类型集合类型是复合类型,包括索引表类型、嵌套表类型和可变数组类型。和可变数组类型。n集合类型与记录类型的区别在于,记录类型中的成员集合类型与记录类型的区别在于,记录类型中的成员分量可以是不同类型的,类似
22、于结构体,而集合类型分量可以是不同类型的,类似于结构体,而集合类型中所有的成员分量必须具有相同的数据类型,类似于中所有的成员分量必须具有相同的数据类型,类似于数组。数组。Oracle10g 数据库基础教程34p%TYPE与%ROWTYPEn如果要定义一个类型与某个变量的数据类型或数据库如果要定义一个类型与某个变量的数据类型或数据库表中某个列的数据类型一致(不知道该变量或列的数表中某个列的数据类型一致(不知道该变量或列的数据类型)的变量,可以利用据类型)的变量,可以利用%TYPE来实现。来实现。n如果要定义一个与数据库中某个表结构一致的记录类如果要定义一个与数据库中某个表结构一致的记录类型的变量
23、,可以使用型的变量,可以使用%ROWTYPE来实现。来实现。p注意n变量的类型随参照的变量类型、数据库表列类型、表变量的类型随参照的变量类型、数据库表列类型、表结构的变化而变化;结构的变化而变化;n 如果数据库表列中有如果数据库表列中有NOT NULL约束,则约束,则%TYPE与与%ROWTYPE返回的数据类型没有此限制。返回的数据类型没有此限制。Oracle10g 数据库基础教程35pDECLAREp v_sal emp.sal%TYPE;p v_emp emp%ROWTYPE;pBEGINp SELECT sal INTO v_sal FROM emp WHERE empno=7844;p
24、 SELECT*INTO v_emp FROM emp WHERE empno=7900;p DBMS_OUTPUT.PUT_LINE(v_sal);p DBMS_OUTPUT.PUT_LINE(v_emp.ename|v_emp.sal);pEND;Oracle10g 数据库基础教程3614.2.4 变量与常量变量与常量p变量与常量的定义p变量的作用域Oracle10g 数据库基础教程37变量声明(1)变量与常量的定义)变量与常量的定义p变量定义的一般格式nvariable_name CONSTANT datatype NOT NULL DEFAULT|:=expression;p说明n变量
25、或常量名称是一个PL/SQL标识符,应符合标识符命名规范;n每行只能定义一个变量;n如果加上关键字CONSTANT,则表示所定义的是一个常量,必须为它赋初值;n如果定义变量时使用了NOT NULL关键字,则必须为变量赋初值;n如果变量没有赋初值,则默认为NULL;n使用DEFAULT或“:=”运算符为变量初始化。Oracle10g 数据库基础教程38pDECLAREp v1 NUMBER(4);p v2 NUMBER(4)NOT NULL:=10;p v3 CONSTANT NUMBER(4)DEFAULT 100;pBEGINp IF v1 IS NULL THEN p DBMS_OUTPU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 14 PLSQL 语言 基础
限制150内