PL/SQL
变量的声明
标识符
PL/SQL程序设计中的标识符定义与SQL 的标识符定义的要求相同。要求和限制有:
- 标识符名不能超过30字符;
- 第一个字符必须为字母;
- 不分大小写;
- 不能用’-‘(减号);
- 不能是SQL保留字。
变量命名
在PL/SQL中有特别的讲究,建议在系统的设计阶段就要求所有编程人员共同遵守一定的要求,使得整个系统的文档在规范上达到要求。下面是建议的命名方法:
DECLARE /* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */
V_name varchar2(18);
V_number := 45;
如果变量在声明时使用了NOT NULL,则必须为变量指定初始值,
i number not null := 10;
如果变量在声明时使用了CONSTANT,则必须为变量指定初值,并且初值不可改变。
i CONSTANT number := 10;
变量类型
基本类型
RECORD 类型
记录类型
记录类型是把逻辑相关的数据作为一个单元存储起来,它必须包括至少一个标量型或RECORD 数据类型的成员,称作PL/SQL RECORD 的域(FIELD),其作用是存放互不相同但逻辑相关的信息。
定义记录类型语法如下:
TYPE record_type IS RECORD(
Field1 type1 [NOT NULL] [:= exp1 ],
Field2 type2 [NOT NULL] [:= exp2 ],
. . . . . .
Fieldn typen [NOT NULL] [:= expn ] ) ;
--可以将recode类型理解成Java中所对应的类类型
DECLARE
TYPE test_rec IS RECORD(
Code VARCHAR2(10),
Name VARCHAR2(30) NOT NULL :='a book'
);
V_book test_rec;
BEGIN
V_book.code :='123';
V_book.name :='Java 从精通到入门';
DBMS_OUTPUT.PUT_LINE(v_book.code||v_book.name);
END;
使用%TYPE
定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。
使用%TYPE特性的优点在于:
- 所引用的数据库列的数据类型可以不必知道;
- 所引用的数据库列的数据类型可以实时改变。
-- 用 %TYPE 类型定义与表相配的字段
DECLARE
TYPE t_Record IS RECORD(
T_no emp.empno%TYPE,
T_name emp.ename%TYPE,
T_sal emp.sal%TYPE );
-- 声明接收数据的变量
v_emp t_Record;
BEGIN
SELECT empno, ename, sal INTO v_emp FROM emp WHERE empno=7788;
DBMS_OUTPUT.PUT_LINE
(TO_CHAR(v_emp.t_no)||v_emp.t_name||TO_CHAR(v_emp.t_sal));
END;
%ROWTYPE
--%ROWTYPE可以理解为将数据库中的一行提取出来的一个副本
DECLARE
r_emp emp %ROWTYPE ;
BEGIN
SELECT empno, ename, sal INTO r_emp.empno,r_emp.ename,r_emp.sal FROM emp WHERE empno=7788;
DBMS_OUTPUT.PUT_LINE
(TO_CHAR(r_emp.empno)||r_emp.ename||TO_CHAR(r_emp.sal));
END;