1.1PL/SQL的结构
PL/SQL是ORACLE对标准数据库语言的扩展,PL/SQL是一种块结构的语言,组成PL/SQL程序的单元是逻辑块,一个PL/SQL程序包含了一个或多个逻辑块,每个块都可以划分为三个部分。示例:
[DECLARE]
--声明部分(包含了变量和常量的数据类型和初始值,游标的声明也在这一部分)
BEGIN
--执行部分
[EXCEPTION]
--异常处理部分(这一部分是可选的)
END
1.1.1PL/SQL中的数据类型
在PL/SQL中有数字类型、字符类型、日期类型、大对象类型、逻辑类型、空值、属性类型和对象类型。
1.1.2数字类型(NUMBER BINARY_INTEGER 和PLS_INTEGER)
(1)NUMBER:可以表示整数和小数,可以设定数值的精度和刻度;
范围:-10E130 到 10E125
子类型:DEC、DECIMAL、DOUBLE、PRECISION、FLOAT、INTEGERIC、INT、UNMERIC、REAL、SMALLINT
(2)BINARY_INTEGER:主要用于整数,存储单字节整数,在计算机中运算速度比NUMBER快;
范围:-2147483647 到 2147483647
子类型:NATURAL(非负数)、POSITIVE(正数)、NATURALN(只用于非负数和非NULL值)、POSITIVEN(正数,不能用于NULL值)、SIGNTYPE(-1、0或1)
(3)PLS_INTEGER:直接使用CPU寄存器存储,所以计算速度更快;与BINARY_INTEGER基本相同,但运算时,PLS_INTEGER提供更好的性能。
1.1.3字符类型
(1)CHAR PL/SQL中的范围:1..32767 SQL中的数据范围:1..2000
存储可变长度字符串
(2)VARCHAR2 1..32767 1..4000
存储可变长度的字符串
(3)RAW 1..32767 1...2000
存储二进制数据和字节字符串,不能在字符集之间进行转换
(4)LONG 1...32760 1.2GB
大文本对象类型
(5)LONGRAW 1....32760 1.2GB
与LONG数据类型相似,不能字符集之间进行转换
(6)ROWID 18个字节 18个字节
与数据库ROWID伪列类型相同,能够存储一个行标示符。
1.1.4大对象类型(LOB)
用于存储类似图像,声音这样的大类型数据对象,数据对象可以是二进制数据也可以是字符数据,最大长度不超过4G。LOB支持任意访问方式,LONG只支持顺序访问方式。
1.1.5逻辑类型
两个值(TRUE 和 FALSE)
1.1.6空值(NULL)
1.1.7对象
ORACLE 是一个面向对象的关系型数据库,因此在ORACLE定义对象。在PL/SQL中可以使用这些自定义的对象类型。
1.1.8属性类型
(1)%TYPE 获取列的数据类型
(2)%ROWTYPE 获取表中的行结构,可以作为一个对象的类型。
1.1.9数据运算符
(1)算数操作符:+加 -减 *乘 **乘方 /除
(2)关系操作符:!= 或<>不等于 <=小于等于 >=大于等于 <小于 >大于
(3)比较操作符:IS NULL 、LIKE、BETWEEN ....AND、IN、NOT IN
(4)逻辑操作符:AND 、OR 、NOT
(5)字符连接操作符:||
1.1.10 PL/SQL的过程数据显示
设定参数的语法:SET SERVEROUTPUT ON;
在客户端输出结果的语句使用
DBMS_OUTPUT.PUT('字符') 向一个行中添加字符
DBMS_OUTPUT.NEW_LINE() 输出一个新行,也可以用于将行缓冲中未输出的字符输出这些函数通常作为PL/SQL调试使用,在实际的PL/SQL块中通常不需要显示输出。
1.1.11 PL/SQL的常量和变量声明(必须在声明部分声明)
语法:IDENTIFIER [CONSTANT] datatype [NOT NULL]
[:= | DEFAULT expr];
1.1.12赋值
变量声明的赋值两种方式:(1) 使用DEFAULT(2)使用 :=
示例:(1)ID INT DEFAULT 123456;
(2)ID INT:=3621;
程序块中的赋值两种方式:(1):=赋值(2)利用查询语句赋值
1.1.13控制语句
1.条件控制:
IF...条件表达式..THEN 执行语句 END IF;
IF...条件表达式...THEN 执行语句 ELSE 执行语句 END IF;
IF 条件表达式 THEN 执行语句 ELSEIF 条件表达式 THEN 执行语句 ELSE 执行语句 END IF;
CASE 字符串变量 WHEN 结果集1 THEN 执行语句;WHEN 结果集2 THEN 执行语句;....ELSE 执行语句;END CASE;
CASE WHEN 条件表达式1 THEN 执行语句;WHEN 条件表达式2 THEN 执行语句;...ELSE 执行语句;END CASE;
2.循环控制:
LOOP语句的语法:
LOOP EXIT WHEN 条件表达式;执行语句 END LOOP;
FOR 循环控制的语法:
FOR 变量 IN 起始值....结束值 LOOP 执行语句 END LOOP;
WHILE循环的语法:
FOR 变量 IN 起始值....结束值 LOOP 执行语句 END LOOP;
3.跳转控制
表示跳转的指令是GOTO
语法:执行语句<<节名词>>执行语句
1.1.14记录
PL/SQL记录只有一行,但是有多个列。
定义:TYPE <类型名>IS RECORD <列名1 类型1,列名2 类型1,......列名n 类型n>