Oracle入门(十四.4)之在PL / SQL中使用变量
目标本课涵盖以下目标:列出PL / SQL中变量的用法•确定PL / SQL中变量的语法•在PL / SQL中声明和初始化变量•在PL / SQL中为变量分配新值一、目的 您使用变量来存储和操作数据。 在本课中,您将学习如何在PL / SQL块的声明部分声明和初始化变量。 使用PL / SQL,您可以声明变量,然后在SQL和过程语句中使用它们。 变量可以被认为是存储容器,它可以容
·
一、变量的使用
(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;
更多推荐
已为社区贡献6条内容
所有评论(0)