- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 PL/SQL语言基础
本章主要介绍PL/SQL语言基础、PL/SQL控制结构。PL/SQL记录和表类型、游标、过程和函数、触发器、程序包和异常处理等知识。
9.1 PL/SQL基础
PL/SQL是Procedure Language/Structuer Query Language的英文缩写,是Oracle对标准SQL规范的扩展,全面支持SQL的数据操作、事务控制等。PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作。
PL/SQL是一种块结构语言,即构成一个PL/SQL程序的基本单位是程序块。程序块由过程、函数和无名块三种形式组成,它们之间可以相互嵌套。PL/SQL程序块在执行时不必逐条在网络上传送SQL语句去执行,作为一组SQL语句的整体发送到Oracle。PL/SQL引擎还可以嵌入到Oracle开发工具中,这样在客户机上就可以处理PL/SQL代码,减少了网络数据流量。
PL/SQL能够在运行Oracle的任何平台上运行,但不能像其他高级语言一样编译成可执行文件去执行。SQL*Plus是PL/SQL语言运行的基本工具,当程序第一句以DECLARE或BEGIN开头时,系统会自动识别出PL/SQL语句,而不是直接的SQL命令。PL/SQL在SQL*Plus中运行时,当遇到斜杠(/)时才提交数据库执行,而不像SQL命令,遇到分号(;)就执行。
PL/SQL程序单元可以提高数据库的安全性,程序单元允许用户访问数据库对象,而不需向用户赋予特定对象的权限。DBA也可以利用PL/SQL的功能自动执行和处理一些日常管理任务。
下面先介绍PL/SQL语言的基础知识。
9.1.1 变量及声明
变量是存储值的内存区域,在PL/SQL中用来处理程序中的值。像其他高级程序语言一样,PL/SQL中的变量也要遵循一定的命名规则,约定如下:
① 变量名以字母开头,不区分大小写;
② 变量名由字母、数字以及$、#或_和特殊字符组成;
③ 变量长度最多包含30个字符;
④ 变量名中不能有空格;
⑤ 尽可能避免缩写,用一些具有意义的单词命名;
⑥ 不能用保留字命名。
正确的变量命名,如Mynumber1,My_number1,My$money,v_temp,TEMP,money$$$tree,SN##,try_again等。
非法的变量命名,如1Mynumber,my number 1,mymoney,vtemp123456-7891011121314151617181920等。其中,1Mynumber以数字开头非法,my number 1中间有空格非法,mymoney使用了非法字符,vtemp1234567891011121314151617181920长度过长,超过了30个字符长度。
在PL/SQL中,使用变量前一定要声明,声明变量的语句格式如下:
变量名 [CONSTANT] 数据类型 NOT NULL [DEFAULT | := 默认值]
其中,CONSTANT选项表示申明的是固定不变的值,即常量。数据类型指变量的数据类型,常用的数据类型如CHAR,NUMBER,DATE等。NOT NULL表示该变量非空,必须指定默认值。DEFAULT和“:=”作用相同可互换。
下面的一组语句声明了几个变量。
ID CONSTANT Integer := 100;
c Char(4);
n Number(5) DEFAULT 100.00;
last_name Varchar2(10) := WANG;
d Date;
isfinished Boolean DEFAULT TRUE;
9.1.2 数据类型
PL/SQL除了可以使用基本数据类型以外,还允许用户自定义数据类型,如记录类型、TABLE类型、OBJECT类型以及XML类型等。
PL/SQL的数据类型之间可以相互转换,PL/SQL提供了一些类型转换函数,但并不是所有的数据类型之间都可以相互转换。常用的类型转换函数见表9-1。
表9-1 常用的类型转换函数
名 称 说 明 TO_CHAR 转换为CHAR类型 TO_DATE 转换为DATE类型 TO_TIMESTAMP 转换为TIMESTAMP类型 TO_NUMBER 转为为NUMBER类型 HEX_TO_RAW 将十六进制转化为二进制 RAW_TO_HEX 将二进制转化为十六进制 TO_BINARY_FLOAT 转换为BINARY_FLOAT类型 TO_BINARY_DOUBLE 转换为BINARY_DOUBLE类型 TO_LOB 转换为大对象类型 TO_BLOB 转换为BLOB类型 TO_CLOB 转换为CLOD类型 TO_NCLOB 转换为NCLOB类型 9.1.3 表达式
您可能关注的文档
- L1三年上册浅析.ppt
- L03-05纳米药物系统浅析.ppt
- 《云计算(第三版)》配套之一:第1章大数据与云计算浅析.pptx
- L10科学发展观和小康社会的经济建设浅析.ppt
- 《运用KPI指标解决问题》烦烦烦浅析.pptx
- L17-薄膜干涉(二)等倾条纹浅析.ppt
- 第8讲成型零件设计剖析.pptx
- 《中国梦万科梦》梦想大冲关活动招商方案浅析.pptx
- L6566新的浅析.ppt
- 单片机数字钟设计剖析.doc
- unit6howtowritearottenpoemwithalmostnoeffort浅析.ppt
- unit8lesson1languagepoints浅析.ppt
- Unit9_Raising_Finance浅析.ppt
- Unit12(Lifeisfullofunexpected)-Reading浅析.ppt
- 第9章技术价值剖析.doc
- lecture-20浅析.ppt
- Unit12Lifeisfulloftheunexpected.SectionB(1a-1e)浅析.ppt
- 单元强化训练题(含):必修一第二章化学物质及其变化剖析.doc
- 单元训练题十六有机物命名、结构、推断剖析.doc
- unit21.Lesson3Epidemics_Explained浅析.ppt
文档评论(0)