pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。
优点:
1、提高应用程序的运行性能
2、模块化的设计思想
3、减少网络传输量
4、提高安全性
缺点:
1、移植性不好.
编写规范
单行注释--
多行注释/*...*/
定义变量时,建议用v_作为前缀 v_sal
定义参数时,建议用p_作为前缀 p_sal
定义常量时,建议用c_作为前缀 c_sal
定义游标时,建议用_cursor作为后缀 emp_cursor
定义例外时,建议用e_作为前缀 e_error
定义类型时,建议用tp_作为前缀 tp_user
块编程包括存储过程,函数,触发器,包。在块中判断不为0必须用<>,不可以用!=;
块结构由三个部分构成:定义部分,执行部分,例外处理部分。如下:
declare[可选]
/*定义部分-定义常量,变量,游标,例外,复杂数据类型*/
begin(必选)
/*执行部分-要执行的pl/sql语句和sql语句,其中语句以;结束*/
exception[可选]
/*例外处理部分-处理运行的各种错误*/
end;(必选)
调用过程的时候用exec 块名(参数)或者call 块名(参数);
声明参数的时候不可以指定参数类型的大小,只要指定类型就可以了。如:spName varchar2;
常量的定义
c_pi constant number := 3.1415926;
记录集的定义
type tp_user is Record
(
userid number,
username varchar2(10),
password varchar2(10)
);
v_user tp_user;
v_user:
列定义类型:v_变量名 表名.列名%type;表示v_变量采用某表某列的类型,如下:
v_ename emp.ename%type;
行定义类型:v_变量名 表名%rowtype;表示v_变量采用某表类型,如下:
v_empRow emp%rowtype;
优点:
1、提高应用程序的运行性能
2、模块化的设计思想
3、减少网络传输量
4、提高安全性
缺点:
1、移植性不好.
编写规范
单行注释--
多行注释/*...*/
定义变量时,建议用v_作为前缀 v_sal
定义参数时,建议用p_作为前缀 p_sal
定义常量时,建议用c_作为前缀 c_sal
定义游标时,建议用_cursor作为后缀 emp_cursor
定义例外时,建议用e_作为前缀 e_error
定义类型时,建议用tp_作为前缀 tp_user
块编程包括存储过程,函数,触发器,包。在块中判断不为0必须用<>,不可以用!=;
块结构由三个部分构成:定义部分,执行部分,例外处理部分。如下:
declare[可选]
/*定义部分-定义常量,变量,游标,例外,复杂数据类型*/
begin(必选)
/*执行部分-要执行的pl/sql语句和sql语句,其中语句以;结束*/
exception[可选]
/*例外处理部分-处理运行的各种错误*/
end;(必选)
调用过程的时候用exec 块名(参数)或者call 块名(参数);
声明参数的时候不可以指定参数类型的大小,只要指定类型就可以了。如:spName varchar2;
常量的定义
c_pi constant number := 3.1415926;
记录集的定义
type tp_user is Record
(
userid number,
username varchar2(10),
password varchar2(10)
);
v_user tp_user;
v_user:
列定义类型:v_变量名 表名.列名%type;表示v_变量采用某表某列的类型,如下:
v_ename emp.ename%type;
行定义类型:v_变量名 表名%rowtype;表示v_变量采用某表类型,如下:
v_empRow emp%rowtype;