`
xiaoheliushuiya
  • 浏览: 396860 次
文章分类
社区版块
存档分类
最新评论

PL/SQL教程(二)

 
阅读更多
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_percentconstant
number:=10;
begin
 
updateemp
 
setcomm=sal*v_comm_percent
 
wheredeptno=10;
 
end
SQL
>/
PL
/SQLproceduresuccessfullycompleted.

SQL
>


  命名的程序与匿名程序的执行不同,执行命名的程序块必须使用execute关键字:

createorreplaceprocedureupdate_commission
 (v_dept
innumber,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_dept
number;
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教程PL/SQL教程

    Oracle 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教程PL/SQL教程

    PL/SQL教程

    ORACLE的PL/SQL教程,有兴趣的同学可以看看,数据库工程师专用

    PL/SQL教程 总共6个ppt

    PL/SQL教程 总共6个ppt 很详细

    PL/SQL基础 教程

    PL/SQL 教程,非常详细,绝对的好资源!!!!

    sql、pl/sql教程.rar

    SQL: 结构化查询语言(Structured Query Language),用来与Oracle 数据库服务器进行交互。...SQL*Plus: Oracle 常用的工具,用来识别SQL语言和编写、执行PL/SQL代码,它与Oracle 数据库管理系统紧密结合。

    oracle10g_pl/sql

    oracle10g pl/sql完备教程,供初学者学习与开发者参考

    PL/SQL Developer v8.0.3 1510

    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 编程基础知识详解,PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在PL/SQL代码的程序单元中(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.。

    PL/SQL编程教程

    PL/SQL编程教程电子书,全册,完整版。。。。

    oracle数据库 sql 和pl/sql实例教程

    oracle数据库 sql 和pl/sql实例教程

    Oracle数据库SQL和PL/SQL实例教程

    Oracle数据库SQL和PL/SQL实例教程 西安电子科技大学出版社

    PL/SQL详细基础教程

    十分详细的PL/SQL基础教程。非常适合Oracle开发者入门学习使用。

    最容易上手的PL/SQL学习教程-有经过测试的丰富案例

    最容易上手的PL/SQL学习教程-有经过测试的丰富案例,可以直接复制代码至SQL*PLUS中运行,知识点精确明了,是快速学习PL/SQL的绝好资料。

    oracle pl/sql 实例精解(中文原书第4版)

    本书是一本逐步分解的,详尽的pl/sql编程教程,使用真实场景的试验、范例和练习来介绍读者所需的pl/sql编程...使用本书,读者可以快速掌握pl/sql编程基本知识,并建立工程化的概念,是市面上难得的pl/sql教程。.

    PL/SQL Developer

    PL/SQL Developer超强大的oracle数据库编辑器; PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等。PL/SQL Developer功能十分全面,可以大大缩短...

    pl/sql developer使用教程

    教你如何使用品pl/sql developer,特别适用于初学者,讲解非常详细哈!

    精品资源:超全PL/SQL教程全集

    超全PL/SQL技术教程全集,囊括PL/SQL语言教程、开发环境配置、实例教程等许多方面的知识,对于研究和学习PL/SQL都是不可多得的好帮手。

Global site tag (gtag.js) - Google Analytics