好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Oracle PL / SQL变量

变量是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>; 
 
 &lt;variable_name> is the name of the variable, 
&lt;table_name> is the name of the table used to anchor the data type, 
&lt;column_name> is the name of the column used to anchor the data type, 
&lt;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变量的详细内容...

  阅读:28次

上一篇

下一篇

第1节:Oracle PL / SQL CASE 语句    第2节:Oracle PL / SQL CHAR VARCHAR2    第3节:Oracle PL / SQL INTERVAL数据类型    第4节:Oracle PL / SQL loop循环    第5节:Oracle PL / SQL for loop循环    第6节:Oracle PL / SQL goto 语句    第7节:Oracle PL / SQL update更新数据    第8节:Oracle PL / SQL包    第9节:Oracle PL / SQL 存储过程    第10节:Oracle PL / SQL 函数    第11节:Oracle PL / SQL变量    第12节:Oracle PL / SQL变量范围    第13节:Oracle PL / SQL TIMESTAMP数据类型    第14节:Oracle PL / SQL 聚合函数大全    第15节:Oracle PL/SQL Views 视图    第16节:Oracle PL / SQL 表 table    第17节:Oracle PL/SQL Delete删除数据    第18节:Oracle PL/SQL Select 查询    第19节:Oracle PL/SQL 教程    第20节:Oracle PL / SQL注释    第21节:Oracle PL / SQL触发器Triggers    第22节:Oracle PL / SQL变量值    第23节:Oracle PL / SQL块结构    第24节:Oracle PL / SQL关联数组    第25节:Oracle PL / SQL文字    第26节:Oracle PL / SQL参数    第27节:Oracle PL / SQL运算符    第28节:Oracle PL/SQL NUMBER    第29节:Oracle PL/SQL if 语句    第30节:Oracle PL/SQL while循环    第31节:Oracle PL / SQL约束    第32节:Oracle PL / SQL 插入insert    第33节:Oracle PL / SQL数据类型    第34节:PL / SQL 分析函数大全