您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle_4_[plsql]
1/31Edit:JinYFVer:1.0snownights@CopyRightOraclePL/SQL第四章Edit:JinYFVer:1.02/31本章内容安排4.1PL/SQL简介4.2PL/SQL语法4.3存储过程4.4触发器4.5游标4.6包4.7函数Edit:JinYFVer:1.03/314.1PL/SQL简介4.1.1PL/SQL特点4.1.2开发及运行环境Edit:JinYFVer:1.04/311.PL/SQL的优点(1)PL/SQL是一种高性能的基于事务处理的语言,能运行在任何Oracle环境中,支持所有数据处理命令。通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。(2)PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有Oracle对象类型。(3)PL/SQL块可以被命名和存储在Oracle服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。(4)可以使用Oracle数据工具管理存储在服务器中的PL/SQL程序的安全性。可以授权或撤销数据库其他用户访问PL/SQL程序的能力。(5)PL/SQL代码可以使用任何ASCII文本编辑器编写,所以对任何Oracle能够运行的操作系统都是非常便利的。4.1.1PL/SQL特点Edit:JinYFVer:1.05/312.PL/SQL的缺点对于SQL,Oracle必须在同一时间处理每一条SQL语句,在网络环境下这就意味作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。而PL/SQL是以整个语句块发给服务器,这就降低了网络拥挤。Edit:JinYFVer:1.06/31服务器端PL/SQL不需要显式的安装或许可。它是Oracle9i数据库的隐式部分,此处有相应的文档。PL/SQL编译器和解释器也嵌入到OracleDeveloper中,为开发者在客户端和服务器端提供一致的、可利用的开发模型。4.1.2开发及运行环境Edit:JinYFVer:1.07/314.2.2常量与变量4.2.3数据类型4.2.4运算符4.2.1PL/SQL块4.2.5流程控制4.2.6异常处理4.2PL/SQL语法Edit:JinYFVer:1.08/311.块结构2、块的命名和匿名3、块的执行4.2.1PL/SQL块Edit:JinYFVer:1.09/311.块结构PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。(1)块的三个部分①声明部分(Declarationsection)声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字DECLARE开始,如果不需要声明变量或常量,那么可以忽略这一部分。②执行部分(Executablesection)执行部分是PL/SQL块中的指令部分,由关键字BEGIN开始,所有的可执行语句都放在这一部分,其他的PL/SQL块也可以放在这一部分。③异常处理部分(Exceptionsection)这一部分是可选的,在这一部分中处理异常或错误,对异常处理的详细讨论在后面进行。Edit:JinYFVer:1.010/31(2)PL/SQL块语法PL/SQL块语法结构如下:[DECLARE]declarationstatementsBEGINexecutablestatements[EXCEPTION]exceptionstatementsENDPL/SQL块中的每一条语句都必须以分号结束,SQL语句可以多行,但分号表示该语句的结束。一行中可以有多条SQL语句,他们之间以分号分隔。每一个PL/SQL块由BEGIN或DECLARE开始,以END结束。注释由--标示。Edit:JinYFVer:1.011/312.块的命名和匿名PL/SQL程序块可以是一个命名的程序块也可以是一个匿名程序块,匿名程序块可以用在服务器端也可以用在客户端。执行部分包含了所有的语句和表达式,执行部分以关键字BEGIN开始,以关键字EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。分号分隔每一条语句,使用赋值操作符:=或SELECTINTO或FETCHINTO给每个变量赋值,执行部分的错误将在异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块。所有的SQL数据操作语句都可以用于执行部分,PL/SQL块不能在屏幕上显示SELECT语句的输出。SELECT语句必须包括一个INTO子串或者是游标的一部分,执行部分使用的变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句,NULL是一条合法的可执行语句,事物控制语句COMMIT和ROLLBACK可以在执行部分使用,数据定义语言(DataDefinitionlanguage)不能在执行部分中使用,DDL语句与EXECUTEIMMEDIATE一起使用或者是DBMS_SQL调用。Edit:JinYFVer:1.012/313.块的执行SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行。命名的程序与匿名程序的执行不同,执行命名的程序块必须使用execute关键字:。如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要EXECUTE关键字。Edit:JinYFVer:1.013/311.变量2、常量3、有效字符集4.2.2常量与变量Edit:JinYFVer:1.014/311、变量(1)声明变量声明变量的语句格式如下:Variable_name[CONSTANT]databyte[NOTNULL][:=|DEFAULTexpression]注意:可以在声明变量的同时给变量强制性的加上NOTNULL约束条件,此时变量在初始化时必须赋值。(2)给变量赋值给变量赋值有两种方式:①直接给变量赋值②通过SQLSELECTINTO或FETCHINTO给变量赋值Edit:JinYFVer:1.015/312、常量常量与变量相似,但常量的值在程序内部不能改变,常量的值在定义时赋予,声明方式与变量相似,但必须包括关键字CONSTANT。常量和变量都可被定义为SQL和用户定义的数据类型。为了减少这部分程序的修改,编程时使用%TYPE、%ROWTYPE方式声明变量,使变量声明的类型与表中的保持同步,随表的变化而变化,这样的程序在一定程度上具有更强的通用性。Edit:JinYFVer:1.016/313、有效字符集(1)所有的大写和小写英文字母;(2)数字0-9;(3)符号:0+一*/<>=!一;:.‘@%,“‘#“&_}{}?[]PL/SQL标识符的最大长度是30个字符,并且不区分字母的大小写。但是适当地使用大小写,可以提高程序的可读性。Edit:JinYFVer:1.017/31PL/Sql数据类型1.基本数据类型VARCHAR2:在PL/SQL中可以存储2000,在oracle8中是4000字节NUMBER[(precision,scale)]:当声明时。默认值是nullDATE:存储日期型CHAR[(maximum_length)]:如没有指定,数据类型为CHAR的列默认长度为1。这个长度的范围是1到2000。LONG:用于长度不定,最大值为2G的字符型数据。LongRaw:存储二进制数据,最大32760bytesBOOLEAN:只能为trueorfalseornullBINARY_INTEGER:-2147483648~2147483648PLS_INTEGER:-2147483648~2147483648Edit:JinYFVer:1.018/31PL/SQL数据类型2、组合类型Table:逻辑单位,相当于一个数组,带有主键PrimaryKey:KEY的类型是BINARY_INTEGERVALUE:真正的值声明语法:TYPEtype_nameISTABLEOF{column_type|variable%TYPE|table.column%TYPE}[NOTNULL][INDEXBYBINARY_INTEGER];identifiertype_name;例如:TYPEt_nametableISTABLEOFVARCHAR(2)INDEXBYBINARY_INTEGER;引用:t_nametable(1):='jact'例如:DECLARETYPEdept_table_typeISTABLEOFdept%ROWTYPEINDEXBYBINARY_INTEGER;dept_tabledept_table_type;引用:dept_table.row1(1):='jact';Edit:JinYFVer:1.019/31PL/SQL数据类型PL/SQLRECORDS,记录类型定义:TYPEtype_nameISRECORD(field_declaration[,field_declaration]…);identifiertype_name;例如:TYPErecord_nameISRECORD(namevarchar(20),idnumber(9))引用:studentrecord_namestudent.namestudent.idEdit:JinYFVer:1.020/31PL/SQL数据类型3、LOB大对象类型,用来存文件、图片、音频等二进制,在PL/SQL中最大长度是4GCLOB:字符数据BLOB:图像、图片(可以容纳4G的二进制)BFILE:MOVIE把二进制存在一个扩展的文件中。容量是4GNCLOBEdit:JinYFVer:1.021/314.2.3数据类型例如:定义如下若干类型变量,常量。DECLAREORDER_NONUMBER(3);CUST_NAMEVARCHAR2(20);ORDER_DATEDATE;EMP_NOINTEGER:=25;PICONSTANTNUMBER:=3.1416;BEGINNULL;END;Edit:JinYFVer:1.022/314.2.4运算符与其他程序设计语言相同,PL/SQL有一系列操作符。主要有:•算术操作符•关系操作符•逻辑操作符Edit:JinYFVer:1.023/311.条件结构2、循环控制3、GOTO语句4.2.5流程控制4、嵌套Edit:JinYFVer:1.024/311、条件结构1)If条件判断逻辑结构If条件判断逻辑结构有三种表达方式。①表达式一:ifconditionthenStatementendif该表达式的功能为:若条件为真,执行then后的语句;否则,跳出条件语句执行endif后的语句。②表达式二:ifconditionthenStatements_1elseStatements_2endif该表达式的功能为:如果条件为真执行then后的语句,否则执行else后的语句。③表达式三:ifcondition1thenStatements_1elseifcondition2thenStatements_2elseStatements_3endif该表达式的功能为:如果if后的条件成立,执行then后面的语句,否则判断elseif后面的条件,条件成立执行第二个then后面的语句,否则执行else后的语句。这是条件语句嵌套。IF可以嵌套,可以在IF或IF..ELSE语句中使用IF或IF…ELSE语句。Edit:JinYFVer:1.025/312)Case表达式Case语句的基本格式如下:Case变量WHEN表达式1then值1WHEN表达式2then值2WHEN表达式3then值3WHEN表达式4then值4ELSE值5END;Case语句的功能:首先设定变量的值作为条件,然后顺序检查表达式,一旦从中找到与条件匹配的表达式值,就停止case语句的处理。Edit:JinYFVer
本文标题:Oracle_4_[plsql]
链接地址:https://www.777doc.com/doc-10566 .html