1.pl/sql 分为三个部分:声明部分、执行部分、异常处理部分
DECLARE
…这里定义PL/SQL变量、自定义类型、游标和局部子程序(可选部分)
BEGIN -- begin和end中间添加响应的操作
…这里可以放置可执行的SQL或者PL/SQL语句,这里必须至少包含一条可执行语句
EXCEPTION
…异常处理部分(可选)
END;
/
每个plsql块可以有以上三部分,但是执行部分是必需的,声明和异常是可选的;如果有异常处理的话,执行部分是以exception结尾,如果不包含exception部分,就要以end;来结尾
每条语句后面和每个块(block)后面都要有一个";"结尾
2.plsql字符集
字母,数字,空白,tab space 回车,其它符号: + - * / = ; :
plsql对大小写不敏感
plsql中的标识符(indentifier)
命名规则:字母开头,后可以跟任意字母,数字,货币符号,下划线,或#,不能有空格,最大长度为30个字母
plsql如何声明变量:
name type [constant] [not null ] [:=value]; //变量名 类型 [常量可选][非空可选][初始值可选];
plsql中要给一个声明的变量赋值要用 := 值
constant 声明变量为常量,初始化后之后不能再修改值,类似于java中的final
not null 非空,plsql中的 null 表示未定义,声明变量时不给他赋值它的默认值就为null
3.数据类型:
a. record 类似于 struct
type emp is record(
id varchar2(32),
firstname emp_xb.firstname%TYPE,
lastname varchar2(20) :='xiaoxiao'
);
b.table :
(类似于java中的map用法key value键值对形式来存)表中的元素的类型可以是复合类型
定义:TYPE 类型名 IS TABLE OF type(value的类型或元素的类型) INDEX BY BINARY INTEGER;
c.varray 类似于 array包含同一种类型的数组
d. 参考类型:
ref cursor 类似于指针
lob (large object)大对象如音频,图片等
e. 标量类型:
binary_integer 只能指定整型
dec 指定复点型
float
number(n,m) n代表整个复点数整个有效位数,m小数点后面的位数
varchar
varchar2
boolean
date
%type 使一个变量具有数据库当中的某个表的某个字段的相同的数据类型
%rowtype
4.结构:
A.条件:
if 条件 then
elsif 条件 then
end if;
B.循环:
a.loop if 条件 then exit; end if; end loop;
b. while 条件 loop ... end loop;
declare
type t_indtab is table of varchar2(10)
index by binary_integer;
v_indtab t_indtab;
v_index binary_integer;
begin
v_indtab(100) :='a';
v_indtab(80) := 'b';
v_indtab(200) := 'c';
dbms_output.put_line(v_indtab(200));
dbms_output.put_line(v_indtab.first);
dbms_output.put_line(v_indtab.last);
v_index := v_indtab.first;
while v_index <= v_indtab.last loop
dbms_output.put_line(v_indtab(v_index));
v_index := v_indtab.next(v_index);
end loop;
/*for i in v_indtab.first .. v_indtab.last loop
dbms_output.put_line(v_indtab(i)));
end loop;*/
end;
C.for循环
for i in 0..9 loop .. end loop;(上限 值结束条件为 <=9 )
(默认为自加想实现为自减可改为 for i in
reverse 9..0 loop ... end loop;)