1、PLSQL的变量类型
1、系统内置的常规简单变量类型: 比如大多数 数据库表的字段类型都可以作为变量类型;
2、用户自定义复杂变量类型: 比如记录类型;
3、引用类型:保存了一个指针值;
4、大对象类型( LOB):保存了一个指向大对象的地址;
2、SQLPLUS变量
PLSQL本身没有输入输出功能,如果要想 像命令行运行C程序那样可以接收输入值,那必须依赖执行环境 把值传给PLSQL块,比如 iSQL Plus执行环境或者PLSQL Developer的Command Window 执行环境中, 有一种 substitution变量 可以用来接收输入值;而另一种Host变量可以把运行时的值传出到执行环境中。
3、PLSQL的变量声明
A.语法
identifier [CONSTANT] datatype [NOT NULL]
[:= | DEFAULT expr];
B.举例
DECLARE
v_hiredate DATE;
v_deptno NUMBER(2) NOT NULL := 10;
v_location VARCHAR2(13) := 'Atlanta';
c_comm CONSTANT NUMBER := 1400;
C.说明
1、变量命名建议遵循通用规则,比如v_name 表示一个变量,c_name表示一个常量;
2、一般建议每一行声明一个变量,这样程序的可读性比较好;
3、如果声明了变量,但未进行初始化,则在没有赋值之前该变量的值为NULL; 一个好的编程习惯是对所有声明 的变量进行初始化赋值。
4、在同一个块中,避免命名与数据库表中的字段名相同的变量;
DECLARE
employee_id NUMBER(6);
BEGIN
SELECT employee_id
INTO employee_id
FROM employees
WHERE last_name =
'Kochhar';
END;
1,常规类型的变量声明
DECLARE
v_job VARCHAR2(9);
v_count BINARY_INTEGER := 0;
v_total_sal NUMBER(9,2) := 0;
v_orderdate DATE := SYSDATE + 7;
c_tax_rate CONSTANT NUMBER(3,2) := 8.25;
v_valid BOOLEAN NOT NULL := TRUE;
2,PLSQL特有的%TYPE属性来声明与XX类型一致的变量类型
I.语法
identifier Table.column_name%TYPE;
II.举例
v_name employees.last_name%TYPE;
v_min_balance v_balance%TYPE := 10;
3,可绑定变量(Bind Variable 也称为Host Variable,非PLSQL 变量)
可绑定变量是一种在缩主环境中定义的变量,所谓缩主环境一般指示SQLPLUS执行环境或者是 PLSQL Developer 的Command Window执行环境;可绑定变量可用于在运行时把值传递给PLSQL,创建语法:
VARIABLE return_code NUMBER
VARIABLE return_msg VARCHAR2(30)
在标准的PLSQL中定义变量是不能用VARIABLE关键字的,此关键字只在SQLPLUS执行环境中有效, 可使用PRINT语句输出变量内容。 在PLSQL中使用这种变量时,前面加”:”,以示区分。
VARIABLE g_salary NUMBER
BEGIN
SELECT salary
INTO :g_salary
FROM employees
WHERE employee_id = 178;
END;
/
PRINT g_salary
4,DBMS_OUTPUT.PUT_LINE()
介绍
Oracle 内置的Package中的函数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中则不需要这句话
4、PLSQL中的注释语句
1、多行注释类似于java 或者 C , 使用 / 和 /
2、单行注释是在语句后面使用 –
DECLARE
...
v_sal NUMBER (9,2);
BEGIN
/* Compute the annual salary based on the
monthly salary input from the user */
v_sal := :g_monthly_sal * 12;
END; -- This is the end of the block
5、SQL函数在PLSQL的过程语句中的使用
A.SQL函数可以在PLSQL中使用
单行的数值和字符串函数、数据类型转换函数、日期函数、时间函数、求最大、最小值的 GREATEST,LEAST 函数等;
B.SQL函数不可以在PLSQL中使用
Decode函数、分组函数(AVG, MIN, MAX, COUNT, SUM, STDDEV, and VARIANCE)等;
6、块嵌套和变量范围
7、变量限定词
在块嵌套的程序中,里层和外层有相同的变量声明,而里层的程序要访问外层的同名变量使用块限定词birthdate 是同名变量,限定词 outer 表示外层,里层要访问外层的bithdate时使用 outer.birthdate
这种格式