按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
数值数据类型
NUMBER 用以存储在 ORACLE 数据库中的任何类型的数值
语法
NUMBER ( max_length )
你也可以使用下边的语法来指定数据类型的精度
NUMBER (precision; scale)
子类型 DEC DECIMAL DOUBLE PRECISION INTEGER INT NUMERIC REAL;
SMALLINT FLOAT
PLS_INTEGER 定义的整数是可以带有符号的 例如 负数
二进制数据类型
二进制数据类型可以以二进制形式来存储数据 如图形或图像 这种数据类型包括 RAW
和 LONGRAW
日期数据类型
DATE 是在 ORACLE 中可以有效存储的数据类型 如果你将某一列定义为 DATE 类型
你就不能指定它的长度 DATE 数据类型的长度是默认的 ORACLE 数据类型是像 01
OCT…97 这样的
逻辑数据类型
逻辑数据类型可以存储下列数值 TRUE FALSE 和 NULL 与 DATE 相类似 BOOLEAN
在作为列或变量的类型在定义时也不需要参数
380
…………………………………………………………Page 381……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
ROWID
ROWID 是存在于 ORACLE 数据库的每一个表中的预定义列 ROWID 以二进制格式
存储和确定表中的每一列 索引就是使用 ROWID 指向数据的
PL/SQL 块的结构
PL/SQL 是一种块结构语言 也就是说 PL/SQL 的程序可以分成逻辑块来写 在一个块
的内部可以有像数据操作或查询之类的过程 下边将会对 PL/SQL 的块进行详细的讨论
l 在 DECLARE 部分包括了定义的变量和其它的对象 如常量和指针 这一部分在
PL/SQL 块中是可以选择的
l PROCDURE 部分包括条件语句和 SQL 语句 块可以对它进行控制 它是 PL/SQL
的必须部分
l EXCEPTION 告诉了 PL/SQL 如何处理指定的错误并按用户的定义进行处理 它
也是 PL/SQL 的可选择部分
注 块是 PL/SQL 代码的逻辑单元 包括至少一个 PROCDURE 部分和可以选择的
DECLARE 以及EXCEPTION 部分
这里是 PL/SQL 块的基本结构
SYNTAX:
BEGIN … optional; denotes beginning of block
DECLARE … optional; variable definitions
BEGIN … mandatory; denotes beginning of procedure section
EXCEPTION … optional; denotes beginning of exception section
END … mandatory; denotes ending of procedure section
END … optional; denotes ending of block
请注意必要部分在第二个 BEGIN — — END 对中的 它构成了一个过程部分 当然
在它们中间是有语句的 如果你使用了第一个 BEGIN 那么你必须同时使用第二个 BEGIN
反之亦然
381
…………………………………………………………Page 382……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
注释
如果一个程序没有注释会怎样 编程语言提供了命令使你可以在你的代码中放放注
释 PL/SQL 当然不例外 你可以在需要注释的行前加一短线 公认的 PL/SQL 注释形式如
下 多行注释则与 C 语言的注释方法相同
语法
…This is a one…line ment。
/* This is a
multiple…line ment。*/
注 PL/SQL 可以直接支持数据操作言语 DML 命令和数据查询 然而 它不支持数据
字典语言 DDL 命令 你通常会使用 PL/SQL 维护在数据库结构中的数据 但是并
不能维护这些结构
DECLARE 部分
在 PL/SQL 的 DECLARE 部分包括了变量 常量 指针和特殊数据类型的定义 作为
一个 PL/SQL 程序员 你可以在你的代码块中定义所有类型的变量 但是你必须要指定数
据类型 而且每一个变量都必须与 ORACLE 中所定义的数据类型一致 变量也要符合
ORACLE 的对象命名标准
变量声明
在 PL/SQL 语句块中变量的数据是可变以 在变量声明时必须对它加以定义 如有必
须 还要进行初始化工作 下例中定义了一组在 PL/SQL 的 DECLARE 部分的变量
DECLARE
owner char(10);
tablename char(30);
bytes number(10);
today date
分析
DECLARE 部分不能自动运行 DECLARE 部分以 DECLARE 语句开头 每一个变量
382
…………………………………………………………Page 383……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
占一行 注意在每一个定义的变量后边都有一个分号
在 DECLARE 部分也可以对变量进行初始化工作 例如
DECLARE
customer char(30);
fiscal_year number(2) := '97';
你可以使用 =符号来进行初始化工作 或者说是赋给它一个初值 对于被定义为 NOT
NULL 的变量你必须要赋初值
DECLARE
customer char(30);
fiscal_year number(2) NOT NULL := '97';
分析
NOT NULL 子句在这里的作用与它在 CREATE TABLE 中所起的作用类似
常量定义
定义常量的方法与定义变量相同 但是常量的数值是静态的 他们不能改变 在上个
例子中 fiscal_year 可能是常量
注 在每一个变量的定义都必须以分号结束
指针定义
指针是 PL/SQL 中的另一种类型的变量 在你通常所认为的变量中保存的是数值 而
指针型变量则指向了查询结果中的某一行数据 在查询的结果有多个时 为了分析数据你
需要在每个记录之间进行翻阅 在查看 PL/SQL 块中的查询结果时 它使用指针来指向返
回的每一行 下边是一个在 PL/SQL 语句块中定义指针的例子
INPUT
DECLARE
cursor employee_cursor is
select * from employees;
指针与视图类似 通过在 PROCDURE 部分使用 LOOP 循环 你可以翻阅指针 这
383
…………………………………………………………Page 384……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
项技术曾简要地提到过
%TYPE 属性
%TYPE 可以返回表中给定列的变量属性 除了查看在 PL/SQL 中的数据类型定义代码
你可以使用%TYPE 来保持在你的块中的代码的一致性
INPUT
DECLARE
cursor employee_cursor is
select emp_id; emp_name from employees;
id_num employees。emp_id%TYPE;
name employees。emp_name%TYPE;
分析
在这个例子中表中 ID_NUM 变量与 EMP_ID 变量具有相同的数据类型 %TYPE 所定
义的变量 NAME 具有与 EMPLOYEES 中的 emp_name 具有相同的数据类型
%ROWTYPE 属性
变量不仅限于单一的数值 如果你所定义的变量与一个指针相关联的话 你可以使用
%ROWTYPE 属性来声明变量与保证它与游标所在行的类型相同 在 ORACLE 的词典中
%ROWTYPE
INPUT
DECLARE
cursor employee_cursor is
select emp_id; emp_name from employees;
employee_record employee_cursor%ROWTYPE
分析
在上例中定义了一个叫 employee_record 的变量 %ROWTYPE 定义了这个变量的使它
与 employee_cursor 所在行的数据类型相同 这个%ROWTYPE 属性定义的变量也称为集合
变量
384
…………………………………………………………Page 385……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
%ROWCOUNT 属性
在 PL/SQL 中%ROWCOUNT 属性可以保证在特定的 SQL 语句块中的游标行数
INPUT
DECLARE
cursor employee_cursor is
select emp_id; emp_name from employees;
records_processed := employee_cursor%ROWCOUNT;
分析
在上例中变量 records_processed 将会返回 PL/SQL 语句所访问的 employee_cursor 的行
数
警告