一、变量的使用

(1)使用变量的原因

•临时存储数据
•储存值的操作
•可重用性


(2)处理PL / SQL中的变量

变量是:
•在声明部分声明并初始化
•在可执行部分中使用并分配新值
变量可以是:
•作为参数传递给PL / SQL子程序
•分配以保存PL / SQL子程序的输出

(3)声明变量

在PL / SQL块中引用所有PL / SQL变量之前,必须在声明部分声明它们。
•声明的目的是为值分配存储空间,指定其数据类型并命名存储位置以便引用它。

•您可以在任何PL / SQL块,子程序或包的声明部分声明变量。

语法

identifier [CONSTANT] datatype [NOT NULL] [:= expr | DEFAULT expr];

(4)初始化变量

变量在DECLARE部分中分配一个内存位置。 变量可以同时分配一个值。 这个过程称为初始化。

DECLARE
v_counter INTEGER := 0;
BEGIN
 v_counter := v_counter + 1;
 DBMS_OUTPUT.PUT_LINE(v_counter);
END; 

(5)声明和初始化变量示例1

DECLARE
 fam_birthdateDATE;
 fam_size NUMBER(2) NOT NULL := 10;
 fam_location VARCHAR2(13) := 'Florida';
 fam_bank CONSTANT NUMBER := 50000;
 fam_population INTEGER;
 fam_name VARCHAR2(20) DEFAULT 'Roberts';
 fam_party_size CONSTANT PLS_INTEGER := 20;

(6)声明和初始化变量示例2

DECLARE
 v_emp_hiredate DATE;
 v_emp_deptno NUMBER(2) NOT NULL := 10;
 v_location VARCHAR2(13) := 'Atlanta';
 c_comm CONSTANT NUMBER := 1400;
 v_population INTEGER;
 v_book_type VARCHAR2(20) DEFAULT 'fiction';
 v_artist_nameVARCHAR2(50);
 v_firstname VARCHAR2(20):='Rajiv';
 v_lastname VARCHAR2(20) DEFAULT 'Kumar';
 c_display_no CONSTANT PLS_INTEGER := 20;
…

二、在可执行部分中分配值

声明变量后,可以在PL / SQL块的可执行部分中使用它。 例如,在下面的块中,变量v_myname在块的声明部分中声明。 您可以在同一个块的可执行部分访问此变量。 你认为这个块会打印什么?

DECLARE
 v_myname VARCHAR2(20);
BEGIN
 DBMS_OUTPUT.PUT_LINE('My name is: '||v_myname);
 v_myname := 'John';
 DBMS_OUTPUT.PUT_LINE('My name is: '||v_myname);
END;

(1)在可执行部分中分配值

例1
在这个例子中,值John被分配给可执行部分中的变量。 该变量的值与串 My name is:。
输出是:

My name is:
My name is: John

Statement process.

例2

在此块中,变量v_myname在声明部分中声明并初始化。 初始化后,v_myname保存值John。 该值在块的可执行部分中进行处理。

DECLARE
 v_myname VARCHAR2(20):= 'John';
BEGIN
 v_myname := 'Steven';
 DBMS_OUTPUT.PUT_LINE('My name is: '||v_myname);
END; 

输出是:

My name is: Steven
Statement processed.

(2)将变量作为参数传递给PL / SQL子程序

参数是由用户或另一个程序传递给程序以定制程序的值。 在PL / SQL中,子程序可以带参数。 您可以将变量作为参数传递给过程和函数。 在以下示例中,参数v_date正被传递给过程PUT_LINE,该过程是包DBMS_OUTPUT的一部分。

DECLARE
 v_date VARCHAR2(30);
BEGIN
 SELECT TO_CHAR(SYSDATE) INTO v_date FROM dual;
 DBMS_OUTPUT.PUT_LINE(v_date);
END;

(3)分配变量到PL / SQL子程序输出

您可以使用变量来保存函数返回的值。

--function to return number of characters in string
FUNCTION num_characters (p_string IN VARCHAR2) RETURN INTEGER IS
 v_num_characters INTEGER;
BEGIN
 SELECT LENGTH(p_string) INTO v_num_characters FROM dual;
 RETURN v_num_characters;
END;
--anonymous block: assign variable to function output
DECLARE
 v_length_of_string INTEGER;
BEGIN
 v_length_of_string := num_characters('Oracle Corporation');
 DBMS_OUTPUT.PUT_LINE(v_length_of_string);
END;


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐