目录
变量命名
PL/SQL变量必须遵循标识符命名规则:
- 变量名称的长度必须小于44个字符。
- 变量名称必须以大写或小写ASCII字母开头:A~Z或a~z。
- PL/SQL 变量不区分大小写。
- 变量名称可以由字母,数字或下划线(_)字符组成。
- 还可以使用
#
和$
字符。
命名变量时,我们可以使用以下约定:
前缀 | 数据类型 |
c_ | CURSOR |
d_ | DATE |
n_ | NUMBER |
r_ | ROW |
t_ | TABLE |
v_ | VARCHAR2 |
变量声明
1、语法:
用于声明变量的语法如下:
<variable_name> <data_type>;
其中<variable_name>是变量的名称,<data_type>是PL/SQL数据类型。
2、实例
declare
n_id number;
v_name varchar2(100);
d_birth_date date;
v_gender varchar2(30);
begin
null;
end;
可变锚点
锚指向使用关键字%TYPE
将PL/SQL数据类型定义“锚定”到相应的SQL数据类型定义。语法如下:
<variable_name> <table_name>.<column_name>%TYPE;
其中<variable_name>是变量名称,<table_name>是用于锚定数据类型的表的名称,<column_name>是用于锚定数据类型的列的名称。
n_id AUTHORS.id%TYPE;
v_name AUTHORS.name%TYPE;
d_birth_date AUTHORS.birth_date%TYPE;
v_gender AUTHORS.gender%TYPE;
变量赋值
为变量赋值的方式主要有下面三种方式:
1、使用赋值运算符
要为PL/SQL中的变量分配文本值,请使用赋值运算符(:=
)
-- 使用字面量为变量赋值
n_id := 40;
v_name := 'STEVEN FEUERSTEIN';
d_birth_date := to_date('20000101', 'YYYYMMDD');
v_gender := 'M';
2、使用INTO子句
通过在SELECT语句中使用INTO子句为变量赋值。
SELECT id, name, birth_date, gender
INTO
n_id, v_name, d_birth_date, v_gender
FROM AUTHORS
WHERE AUTHORS.id = 10;
3、声明变量并初始化值
默认情况下,变量未初始化,因此值为NULL。我们可以在声明部分中为其初始化一个值。
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
null;
end;
NULL值
关键字NULL表示未知的值。NULL不等于任何东西,甚至不等于NULL。我们可以通过下面的方式来判断一个变量的值是否为NULL。
IS NULL(不能用 = NULL)
IS NOT NULL(不能用 <> NULL)
常量约束
要声明常量,请在数据类型之前添加关键字CONSTANT。常量必须在其声明中初始化。每次输入块或子程序时,都会初始化常量。
-- 以下代码显示如何定义常量,并为常量指定一个不可更改的值
DECLARE
n_real CONSTANT REAL := 5.00;
n_value CONSTANT INTEGER := 3;
n_boolean CONSTANT BOOLEAN := FALSE;
BEGIN
NULL;
END;
/
默认值约束
我们可以使用关键字DEFAULT而不是赋值运算符来初始化变量。可以使用DEFAULT在用户定义的记录中初始化子程序参数,光标参数和字段。
-- 对具有典型值的变量使用DEFAULT。对没有典型值的变量使用赋值运算符。
DECLARE
n_char CHAR DEFAULT 'O'; -- Same as n_char CHAR := 'O';
n_length INTEGER DEFAULT 40; -- Typical value
n_count INTEGER := 0; -- No typical value
BEGIN
NULL;
END;
/
NOT NULL约束
声明变量时可以指定NOT NULL约束。NOT NULL防止您为该变量分配一个空值。指定NOT NULL的声明必须指定默认值。
DECLARE
i_id INTEGER(4) NOT NULL := 9999;
BEGIN
NULL;
END;
/