PL/SQL基本语法结构
DECLARE
declarations statements--声明一个变量
BEGIN
executable statements--可执行部分
EXCEPTION
exception statements--异常处理部分
END;
PL/SQL的数据类型
名称 | 类型 | 说明 |
Number | 数字型 | 用于存整数、定点数和浮点数,可以定义精度和取值范围 |
BINARRY_INTRGER | 数字型 | 用于存储带符号的整数,大小范围介于(-2的31次方-1)到(2的31次方-1)之间 |
Integer | 数字型 | NUMBER的子类型,用于声明高精度为38位的十进制整数 |
Real | 数字型 | Number的子类型,用于声明高精度为63位的二进制浮点数 |
Float | 数字型 | NUMBER的子类型,用于声明高精度为126位的二进制浮点数 |
Char | 字符型 | 用于存储固定长度字符,指定不超过32767个字节长度 |
Varchar2 | 字符型 | 用于存储可变长度字符,指定不超过32767个字节长度 |
Date | 日期型 | 用于存储日期和时间值 |
Boolean | 布尔型 | 用于存储逻辑值,TRUE,FALSE 和 NULL |
BFILE | LOB类型 | 该数据类型用于将大型二进制对象存储在系统文件中,最大存储4GB |
BLOB | LOB类型 | 该数据类型用于将大型二进制对象存储在系统文件中,最大存储4GB |
CLOB | LOB类型 | 该数据类型用于将大型二进制对象存储在系统文件中,最大存储4GB |
NCLOB | LOB类型 | 该数据类型用于将大型二进制对象存储在系统文件中,最大存储4GB |
PL/SQL支持两种数据类型
①、%TYPE(指定和表中的那一列的数据类型一样)
DECLARE
empname emp.ename%type; --%type和ename是一样的数据类型
BEGIN
.....
end;
②、%ROWTYPE
DECLARE
emp_rec emp%rowtype;
BEGIN
select * from into emp_rec from emp where empno='7369';
END;
属性类型的优点
- 不需要知道被引用的列或表的具体数据类型
- 如果更改了被引用对象的数据库定义, 那么PL/SQL在运行变量的数据类型也会随之更新
PL/SQL流程控制语句
- 条件控制
- 循环控制
- 顺序控制
条件控制语句
①.IF-THEN
IF condition then
sequence_of_statements;
END IF;
② IF-THEN-ELSE
IF condition then
sequence_of_statement1;
ELSE
sequence_of_statement2;
END IF;
③ IF-THEN-ELSIF
IF condition1 then
sequence_of_statement1;
ELSIF condition THEN
sequence_of_statement2;
ELSE
sequence_of_statement3;
END IF;
④CASE语句
CASE selector
WHEN exp1 THEN seq_of_statemente1;
WHEN exp1 THEN seq_of_statemente2;
........
END CASE;
循环控制语句
①LOOP循环
Loop
seq_of_statements;
END loop;
例子:
declare
x number :=100;
y number;
BEGIN
Loop
x:=x+10;
exit when x>1000; --退出循环语句
end loop;
y:=x;
DBSM_OUTPUT.PUT_LINE(y);
END;
/ set serveroutput on;
②:While循环
语法:
WHILE condition
LOOP
seq_of_statements;
END LOOP;
示例:通过while循环完成for循环的功能
DECLARE
count number:=1;
BEGIN
While count<=10
Loop
DBMS_ouotput.put_line(count);
counter:counter+1;
END loop;
end;