PL/SQL 语言编程
PL/SQL:对SQL语句进行扩展,PL/SQL是过程化语言,具备一定的封装性,是专用于Oracle产品的数据库编程语言。
可以使用PL/SQL语言编写过程、函数、程序包、触发器等,并且可以将这些存储的代码供有权限的数据库用户重新使用。
PL/SQL 语言特点
- 过程化编程语言,基于事务处理的语言,一次连接数据库可以传送多条sql语句,而SQL需要逐条连接传送。
- PL/SQL对大小写不敏感,变量名、对象名和过程名大写。
- 模块化方式构建代码,数据库数据与程序相隔离。
- 能够使一组SQL语句的功能更具模块化程序特点,使用begin…end进行分割。
- 可以对程序中的错误进行自动处理,使程序能够在遇到错误的时候不会被中断。
- 具有较好的可移植性,可以移植到另一个Oracle数据库中。
- 集成在数据库中,调用更快。减少了网络的交互,有助于提高程序性能。
- 是匿名语句块(与后面存储过程、触发器不同)
- 注释语句:–和/*…*/
PL/SQL数据类型
PL/SQL数据类型可以分为标量类型、引用类型、复合类型、LOB类型。与SQL数据类型既有相同之处,也有不同之处
标量类型:只能存储单值的数据类型,声明时即分配内存,可以进一步划分为字符类型、数值类型、逻辑类辑类型、日期和时间类型等。
复合类型:可包含多个标量类型,包括记录、集合、嵌套表和可变长数组等,声明时分配内存,用完回收。
引用类型:包括ref cursor和ref两种,声明时不分配内存,在指向某一个变量时才指向其内存区,程序生命周期中可指向不同存储位置。
变量的定义格式
var_name [contant] type [not null] [:value]
特殊定义变量方法
%type和**%rowtype**作用:基于数据库已有列数据的类型定义变量类型,保持与表定义字段类型一致。
%type和%rowtype定义变量的区别:
·%type:声明单独的变量。
·%rowtype:绑定完整行的类型。
declare
--local variables here
V_record emp.ename%type;一定义字段
trecord emp%rowtype;
begin
-Test statesents here
select ename into V_record from emp where empno=7890;
select * into t_record from emp where empno=7890;
dbms_output.put_line('name is:'||v_record);
dbms_output.put_line('records are:'||t_record.empno || ',' ||t_record.ename||','||t_record.mgr);
end;