PL/SQL教程(二)
变量和常量 变量存放在内存中以获得值,能被PL/SQL块引用。你可以把变量想象成一个可储藏东西的容器,容器内的东西是可以改变的。
声明变量 变量一般都在PL/SQL块的声明部分声明,PL/SQL是一种强壮的类型语言,这就是说在引用变量前必须首先声明,要在执行或异常处理部分使用变量,那么变量必须首先在声明部分进行声明。
声明变量的语法如下:
Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression] |
注意:可以在声明变量的同时给变量强制性的加上NOT NULL约束条件,此时变量在初始化时必须赋值。
给变量赋值 给变量赋值有两种方式:
. 直接给变量赋值
X:=200;
Y=Y+(X*20);
. 通过SQL SELECT INTO 或FETCH INTO给变量赋值
SELECTSUM(SALARY),SUM(SALARY*0.1)
INTOTOTAL_SALARY,TATAL_COMMISSION
FROMEMPLOYEE
WHEREDEPT=10;
常量 常量与变量相似,但常量的值在程序内部不能改变,常量的值在定义时赋予,,他的声明方式与变量相似,但必须包括关键字CONSTANT。常量和变量都可被定义为SQL和用户定义的数据类型。
ZERO_VALUE CONSTANT NUMBER:=0; |
这个语句定了一个名叫ZERO_VALUE、数据类型是NUMBER、值为0的常量。
标量(scalar)数据类型
标量(scalar)数据类型没有内部
组件,他们大致可分为以下四类:
. number
. character
. date/time
. boolean
表1显示了数字数据类型;表2显示了字符数据类型;表3显示了日期和布尔数据类型。
表1 Scalar Types:Numeric
Datatype |
Range |
Subtypes |
description |
BINARY_INTEGER |
-214748-2147483647 |
NATURAL NATURAL NPOSITIVE POSITIVEN SIGNTYPE
|
用于存储单字节整数。 要求存储长度低于NUMBER值。 用于限制范围的子类型(SUBTYPE): NATURAL:用于非负数 POSITIVE:只用于正数 NATURALN:只用于非负数和非NULL值 POSITIVEN:只用于正数,不能用于NULL值 SIGNTYPE:只有值:-1、0或1. |
NUMBER |
1.0E-130-9.99E125 |
DEC DECIMAL DOUBLE PRECISION FLOAT INTEGERIC INT NUMERIC REAL SMALLINT |
存储数字值,包括整数和浮点数。可以选择精度和刻度方式,语法: number[(
<precision>[,<scale>])]。<br>缺省的精度是38,scale是0.</scale></precision> |
PLS_INTEGER |
-2147483647-2147483647 |
|
与BINARY_INTEGER基本相同,但采用机器运算时,PLS_INTEGER提供更好的性能 。 |
表2 字符数据类型
datatype |
rang |
subtype |
description |
CHAR |
最大长度32767字节 |
CHARACTER |
存储定长字符串,如果长度没有确定,缺省是1 |
LONG |
最大长度2147483647字节 |
|
存储可变长度字符串 |
RAW |
最大长度32767字节 |
|
用于存储二进制数据和字节字符串,当在两个数据库之间进行传递时,RAW数据不在字符集之间进行转换。 |
LONGRAW |
最大长度2147483647 |
|
与LONG数据类型相似,同样他也不能在字符集之间进行转换。 |
ROWID |
18个字节 |
|
与数据库ROWID伪列类型相同,能够存储一个行标示符,可以将行标示符看作数据库中每一行的唯一键值。 |
VARCHAR2 |
最大长度32767字节 |
STRINGVARCHAR |
与VARCHAR数据类型相似,存储可变长度的字符串。声明方法与VARCHAR相同 |
表3 DATE和BOOLEAN
datatype |
range |
description |
BOOLEAN |
TRUE/FALSE |
存储逻辑值TRUE或FALSE,无参数 |
DATE |
01/01/4712 BC |
存储固定长的日期和时间值,日期值中包含时间 |
LOB数据类型
LOB(大对象,Large object) 数据类型用于存储类似图像,声音这样的大型数据对象,LOB数据对象可以是二进制数据也可以是字符数据,其最大长度不超过4G。LOB数据类型支持任意访 问方式,LONG只支持顺序访问方式。LOB存储在一个单独的位置上,同时一个"LOB定位符"(LOB locator)存储在原始的表中,该定位符是一个指向实际数据的指针。在PL/SQL中操作LOB数据对象使用ORACLE提供的包 DBMS_LOB.LOB数据类型可分为以下四类:
. BFILE
. BLOB
. CLOB
. NCLOB
操作符
与其他程序设计语言相同,PL/SQL有一系列操作符。操作符分为下面几类:
. 算术操作符
. 关系操作符
. 比较操作符
. 逻辑操作符
算术操作符如表4所示
operator |
operation |
+ |
加 |
- |
减 |
/ |
除 |
* |
乘 |
** |
乘方 |
关系操作符主要用于条件判断语句或用于where子串中,关系操作符检查条件和结果是否为true或false,表5是PL/SQL中的关系操作符
operator |
operation |
< |
小于操作符 |
<= |
小于或等于操作符 |
> |
大于操作符 |
>= |
大于或等于操作符 |
= |
等于操作符 |
!= |
不等于操作符 |
<> |
不等于操作符 |
:= |
赋值操作符 |
表6 显示的是比较操作符
operator |
operation |
IS NULL |
如果操作数为NULL返回TRUE |
LIKE |
比较字符串值 |
BETWEEN |
验证值是否在范围之内 |
IN |
验证操作数在设定的一系列值中 |
表7.8显示的是逻辑操作符
operator |
operation |
AND |
两个条件都必须满足 |
OR |
只要满足两个条件中的一个 |
NOT |
取反 |
执行部分 执行部分包含了所有的语句和 表达式,执行部分以关键字BEGIN开始,以关键字EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。分号分隔每一条语 句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值,执行部分的错误将在异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块
所有的SQL数据操作语句都可以用于执行部分,PL/SQL块不能再屏幕上显示SELECT语句的输出。SELECT语句必须包括一个INTO子串或者 是游标的一部分,执行部分使用的变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句,NULL是一条合法的可执行语句,事物控制语句 COMMIT和ROLLBACK可以在执行部分使用,数据定义语言(Data Definition language)不能在执行部分中使用,DDL语句与EXECUTE IMMEDIATE一起使用或者是DBMS_SQL调用。
执行一个PL/SQL块
SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行,如下面的例子所示:
declare v_comm_percentconstantnumber:=10; begin updateemp setcomm=sal*v_comm_percent wheredeptno=10; end SQL>/ PL/SQLproceduresuccessfullycompleted.
SQL>
|
命名的程序与匿名程序的执行不同,执行命名的程序块必须使用execute关键字:
createorreplaceprocedureupdate_commission (v_deptinnumber,v_perventinnumberdefault10)is begin updateemp setcomm=sal*v_percent wheredeptno=v_dept; end SQL>/ Procedurecreated SQL>executeupdate_commission(10,15); PL/SQLproceduresuccessfullycompleted. SQL>
|
如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要EXECUTE关进字。
declare
v_deptnumber;
begin
selecta.deptno
intov_dept
fromempa
wherejob='PRESIDENT'
update_commission(v_dept);
end
SQL>/
PL/SQLproceduresuccessfullycompleted
SQL>
分享到:
相关推荐
PL/SQL教程PL/SQL教程PL/SQL教程PL/SQL教程
PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...
PL/SQL教程PL/SQL教程PL/SQL教程PL/SQL教程PL/SQL教程PL/SQL教程PL/SQL教程PL/SQL教程
ORACLE的PL/SQL教程,有兴趣的同学可以看看,数据库工程师专用
PL/SQL教程 总共6个ppt 很详细
PL/SQL 教程,非常详细,绝对的好资源!!!!
SQL: 结构化查询语言(Structured Query Language),用来与Oracle 数据库服务器进行交互。...SQL*Plus: Oracle 常用的工具,用来识别SQL语言和编写、执行PL/SQL代码,它与Oracle 数据库管理系统紧密结合。
oracle10g pl/sql完备教程,供初学者学习与开发者参考
PL/SQL Developer 8.0.3 1510 含注册机 PL/SQL Developer is an Integrated Development Environment that is specifically targeted at the development of stored program units for Oracle Databases. Over ...
PL/SQL 编程基础知识详解,PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在PL/SQL代码的程序单元中(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.。
PL/SQL编程教程电子书,全册,完整版。。。。
oracle数据库 sql 和pl/sql实例教程
Oracle数据库SQL和PL/SQL实例教程 西安电子科技大学出版社
十分详细的PL/SQL基础教程。非常适合Oracle开发者入门学习使用。
最容易上手的PL/SQL学习教程-有经过测试的丰富案例,可以直接复制代码至SQL*PLUS中运行,知识点精确明了,是快速学习PL/SQL的绝好资料。
本书是一本逐步分解的,详尽的pl/sql编程教程,使用真实场景的试验、范例和练习来介绍读者所需的pl/sql编程...使用本书,读者可以快速掌握pl/sql编程基本知识,并建立工程化的概念,是市面上难得的pl/sql教程。.
PL/SQL Developer超强大的oracle数据库编辑器; PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等。PL/SQL Developer功能十分全面,可以大大缩短...
教你如何使用品pl/sql developer,特别适用于初学者,讲解非常详细哈!
超全PL/SQL技术教程全集,囊括PL/SQL语言教程、开发环境配置、实例教程等许多方面的知识,对于研究和学习PL/SQL都是不可多得的好帮手。