PLSQL的变量类型:
1、系统内置的常规简单变量类型: 比如大多数 数据库表的字段类型都可以作为变量类型;
2、用户自定义复杂变量类型: 比如记录类型;
3、引用类型:保存了一个指针值; 4、大对象类型( LOB):保存了一个指向大对象的地址;
PLSQL的变量声明:
DECLARE v_hiredate DATE;
v_deptno NUMBER(2) NOT NULL := 10;
v_location VARCHAR2(13) := 'Atlanta';
c_comm CONSTANT NUMBER := 1400;
变量声明的规则:(变量名 变量类型 变量约束 :=初始值)
1 一般建议每一行声明一个变量,这样程序的可读性比较好;
2 如果声明了变量,但未进行初始化,则在没有赋值之前该变量的值为NULL; 一个好的编程习惯是对所有声明 的变量进行初始化赋值。
3、在同一个块中,避免命名与数据库表中的字段名相同的变量;
例如:
DECLARE employee_id NUMBER(6);
BEGIN
SELECT employee_id
INTO employee_id
FROM employees
WHERE last_name = 'Kochhar';
END;
这是个反面教材,合理的变量命名应该为:v_employee_id
PLSQL特有的%TYPE属性来声明与XX类型一致的变量类型:
v_name employees.last_name%TYPE; (此变量类型与employees表的last_name列的类型一致)
v_min_balance v_balance%TYPE := 10; (此变量类型与变量v_balance的类型一致)
可绑定变量(Bind Variable 也称为Host Variable , 非PLSQL 变量)
可绑定变量是一种在缩主环境中定义的变量,所谓缩主环境一般指示SQLPLUS执行环境或者是 PLSQL Developer 的Command Window执行环境;可绑定变量可用于在运行时把值传递给PLSQL
例如:
VARIABLE g_salary NUMBER
BEGIN
SELECT salary
INTO :g_salary
FROM employees
WHERE employee_id = 178;
END;
/
PRINT g_salary;
注意:
1.在标准的PLSQL中定义变量是不能用VARIABLE关键字的,此关键字只在SQLPLUS执行环境中有效, 可使用PRINT语句输出变量内容。
2.在PLSQL中使用这种变量时,前面加”:”, 以示区分。
DBMS_OUTPUT.PUT_LINE()介绍
在接下来的实验中,经常需要在调试程序时输出中间变量的值
DECLARE
v_sal NUMBER(9,2) := &p_annual_sal;
BEGIN v_sal := v_sal/12;
DBMS_OUTPUT.PUT_LINE ('The monthly salary is ' || TO_CHAR(v_sal));
END;
解释: &p_annual_sal 在Plsql Developer的SQL window 执行环境中,可用于提示用户输入一个具体 的值。
注意:在SQLPLUS中执行 DBMS_OUTPUT.PUT_LINE () 前,必须先执行: SET SERVEROUTPUT ON ,而在PLSQL Developer的SQL Window中则不需要这句话。
PL/SQL的注释:
多行注释:/* */
单行注释:--
大多数SQL函数都可以在 PLSQL的过程语句中使用,比如:
单行的数值和字符串函数、数据类型转换函数、日期函数、时间函数、求最大、最小值的 GREATEST, LEAST 函数等;
但有些函数在PLSQL的过程语句中是不能使用的,比如:
Decode函数、分组函数(AVG, MIN, MAX, COUNT, SUM, STDDEV, and VARIANCE)等;
块嵌套和变量范围:
PLSQL的块是可以嵌套的,变量的作用范围与其他语言类似 (外层的变量只能用在所嵌套的块里和自己所属的块内)
变量限定词(outer):
假设我们在块嵌套的程序中,里层和外层有相同的变量声明,而里层的程序要访问外层的同名变量,则使用块限定词。
例如:
begin ————————当用了限定词outer后,最外层也要加一套begin.......end
<<outer>>
DECLARE birthdate DATE;
BEGIN
DECLARE
birthdate DATE;
BEGIN ...
outer.birthdate :=
TO_DATE('03-AUG-1976',
'DD-MON-YYYY');
END;
END;
end;
这个例子中,birthdate 是同名变量,限定词 outer 表示外层,里层要访问外层的bithdate时使用 outer.birthdate 这种格式
——操作:选中欲美化的代码,点上面的 “PL/SQL Beautifier”按钮即可,注意有时代码有语法错误的时候该功能 无效,所以最好先编译通过再美化;