PL/SQL(过程化SQL语言)与Pascal的语法很相似。
一个完整的PL/SQL程序结构如下:
declare
定义语句块
begin
执行语句块
exception
异常处理
end
变量,常量定义
变量声明
变量名 类型标识 [not null]:=值
括号内的 not null为可选,若选用,表明该变量不能为空。
常量声明
常量名 constant 类型标识 [not null]:=值
NULL的概念:
NULL 未定义,不可操作,什么都不是
NULL != 0 NULL!='空格'
和NULL的任何运算都返回NULL
ORACLE里未定义的变量值都为NULL
Oracle 的基本数据类型:
复合数据类型:
1.使用%type定义变量:
%type用来定义与数据表中字段数据类型一致的数据类型。它会随着表中字段类型的改变而改变。
定义方法:
变量名 表名.字段名%type;
2.定义记录型数据类型:(相当于自定义类型,C里面的结构体)
定义方法:
type newtype_name is record(myrecordnumber int,mycurrentdate date);
3.使用%rowtype定义变量
使用%rowtype可以使变量获得整修记录的数据类型
定义方法:
变量名 表名%rowtype;
4.定义一维表类型变量(一维数组)
定义方法:
type tabletype_name is table of 类型 index by binary_integer;
tabletype_name是新定义的类型名
类型为前面的类型定义
以 tabletype_name(1) 的形式引用。
5.定义多维表类型变量
相当于多维数组
定义方法:
type tabletype_name is table of tablename%rowtype index by binary_integer;
关于Oracle PL/SQL中数组的问题 |
oracle有三种复合类型:TABLE,RECORD和VARRAY。TABLE允许用户定义用于数组处理的PL/SQL表。Table复合类型向开发者提供了可用于数组处理的机制。 要初始化数组,必须首先定义数组名或type,在本例中是emp_name。这个table列被定义为最大有20位的varchar2。可以将列定义为任意合法的PL/SQL数据类型,但主键或INDEX必须是BINARY_INTEGER类型的。 下面是偶今天刚写的一个简单例子: declare 这个只是一维数组。多维的可以用record+table实现。 |
|