变量是PL / SQL程序中特定数据类型的内存中的命名位置。
我们必须在PL / SQL块的声明部分声明它们。
变量命名
PL / SQL变量必须遵循标识符命名规则:
变量名称的长度必须小于31个字符。
变量名称必须以大写或小写ASCII字母开头:AZ或az。
PL / SQL不区分大小写。
变量名称可以由1个字母,后接最多29个字母,数字或下划线(_)字符组成。
您还可以使用数字 # 和美元符号 $ 字符。
命名变量时,我们可以使用以下约定:
对下表中列出的每种数据类型使用双字符前缀。
c_ | CURSOR |
d_ | DATE |
n_ | NUMBER |
r_ | ROW |
t_ | TABLE |
v_ | VARCHAR2 |
下面的代码显示了如何创建变量名。
n_id v_name d_birth_date v_gender
以下代码显示如何声明变量
DECLARE birthday DATE; emp_count SMALLINT := 0; pi REAL := 3.14; radius REAL := 1; area REAL := pi * radius**2; BEGIN NULL; END; /
变量声明
要声明变量,请键入变量名,后跟以分号结束的数据类型定义 ; 。
下面的代码展示了如何做变量声明部分。
declare n_id number; v_name varchar2(100); d_birth_date date; v_gender varchar2(30); begin ... end;
用于声明前面的变量的DDL语法如下:
<variable_name> <data_type>;
其中<variable_name>是变量的名称,<data_type>是PL / SQL数据类型之一。
要声明变量保存值或保存到数据库,请在PL / SQL代码中使用%TYPE。
可变锚点
锚指向使用关键字 %TYPE 将PL / SQL数据类型定义[锚定]到相应的SQL数据类型定义。
以下代码是使用列定位点声明的表AUTHORS的PL / SQL变量的示例。
n_id AUTHORS.id%TYPE; v_name AUTHORS.name%TYPE; d_birth_date AUTHORS.birth_date%TYPE; v_gender AUTHORS.gender%TYPE;
用于声明前面的变量的语法如下:
<variable_name> <table_name>.<column_name>%TYPE;
其中<variable_name>是变量的名称,<table_name>是用于锚定数据类型的表的名称,<column_name>是用于锚定数据类型的列的名称。
变量赋值
要为PL / SQL中的变量分配文本值,请使用赋值运算符 := 。
以下代码显示如何使用赋值运算符。
declare ... begin n_id := 40; v_name := 'STEVEN FEUERSTEIN'; d_birth_date := to_date('20000101', 'YYYYMMDD'); v_gender := 'M'; end;
上面的代码使用literial为变量赋值。
数字文字是一个没有任何格式的数字,例如400。
字符文字是由一对单引号 ' 字符(例如[java2s.com])括起来的字符串。
要将恒定值分配给DATE类型的变量,请使用内置函数,
to_date(aiv_date in varchar2, aiv_date_format in varchar2)
我们还可以通过在SQL SELECT语句中使用INTO子句为变量赋值。
例
这里有一个例子:
select id, name, birth_date, gender into n_id v_name, d_birth_date, v_gender from AUTHORS where AUTHORS.id = 10;
在此示例中,PL / SQL关键字 INTO 将值从SELECT语句的列列表移动到相应的PL / SQL变量中。
默认情况下,变量未初始化,因此为NULL。
您可以通过在声明部分中为其声明值来初始化它们为一个值。
例如,可以按如下方式初始化AUTHORS变量:
declare n_id AUTHORS.id%TYPE := 10; v_name AUTHORS.name%TYPE := 'Tom'; d_birth_date AUTHORS.birth_date%TYPE := to_date('20000101', 'YYYYMMDD'); v_gender AUTHORS.gender%TYPE := NULL; begin ... end;
注意
用于声明前面的变量的语法如下:
<variable_name> <table_name>.<column_name>%TYPE := <value>;
<variable_name> is the name of the variable, <table_name> is the name of the table used to anchor the data type, <column_name> is the name of the column used to anchor the data type, <value> is the initial value for the variable.
NULL值
关键字NULL表示NOT KNOWN。
NULL不等于任何东西,甚至不等于NULL。
NULL不小于或大于任何其他值,甚至不为NULL。
您可以使用以下两个短语之一在SQL语句或PL / SQL代码中测试NULL值:
is NULL is not NULL
我们不能使用带NULL的逻辑运算符,like
= NULL
要么
<> NULL
实例2
以下代码显示如何使用变量声明创建匿名PL / SQL过程。
declare n_id EMP.id%TYPE := 1; v_first_name EMP.first_name%TYPE := 'Jack'; v_last_name EMP.last_name%TYPE := 'Smith'; d_birth_date EMP.birth_date%TYPE := to_date('20000101', 'YYYYMMDD'); begin null; end; /
查看更多关于Oracle PL / SQL变量的详细内容...