PLSQL的变量

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”按钮即可,注意有时代码有语法错误的时候该功能 无效,所以最好先编译通过再美化;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值