一、变量的使用

(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;
BEGINv_counter := v_counter + 1;DBMS_OUTPUT.PUT_LINE(v_counter);
END; 

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

DECLAREfam_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

DECLAREv_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在块的声明部分中声明。 您可以在同一个块的可执行部分访问此变量。 你认为这个块会打印什么?

DECLAREv_myname VARCHAR2(20);
BEGINDBMS_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。 该值在块的可执行部分中进行处理。

DECLAREv_myname VARCHAR2(20):= 'John';
BEGINv_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的一部分。

DECLAREv_date VARCHAR2(30);
BEGINSELECT 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 ISv_num_characters INTEGER;
BEGINSELECT LENGTH(p_string) INTO v_num_characters FROM dual;RETURN v_num_characters;
END;
--anonymous block: assign variable to function output
DECLAREv_length_of_string INTEGER;
BEGINv_length_of_string := num_characters('Oracle Corporation');DBMS_OUTPUT.PUT_LINE(v_length_of_string);
END;

Oracle入门(十四.4)之在PL / SQL中使用变量相关推荐

  1. Oracle入门(十四G)之PL / SQL中检索数据

    一.PL / SQL中检索数据 (1)PL / SQL中的SQL语句 可以在PL / SQL中使用以下几种SQL语句: •SELECT从数据库检索数据. •DML语句,例如INSERT,UPDATE和 ...

  2. Oracle入门(十四.1)之PL / SQL简介

    一.PL / SQL描述 程序语言扩展到SQL: •允许将基本程序逻辑和控制流与SQL语句组合在一起. •是Oracle专有编程语言. - 它只能用于Oracle数据库或工具. 二.程序语言扩展到SQ ...

  3. Oracle入门(十四F)之PL/SQL定义变量

    一.变量介绍 (1)变量的使用 可以使用变量: 临时存储数据 存储值的操作 可重用性 (2)PL/SQL中的变量处理 变量是: 在声明部分中声明和初始化 在可执行部分中使用和分配新值 变量可以是: 作 ...

  4. Oracle入门(十四B)之PL/SQL异常处理

    定义:程序执行过程的警告或错误成为例外(Exception) 一.常见预定义错误 二.非预定义错误及用户定义错误 (1)非预定义oracle错误 其他标准的oracle错误,可以自定义异常名,将其与指 ...

  5. Oracle入门(十四.2)之PL / SQL的好处

    一.PL / SQL的好处 在Oracle数据库中使用PL / SQL编程语言有很多好处. 1.将过程构造与SQL集成 2.模块化程序开发 3.改进的性能 4.与Oracle工具集成 5.便携性 6. ...

  6. Oracle入门(十四A)之PL/SQL 基本结构

    一.条件控制语句 (1)条件语句I if-then-end if 形式1: if <布尔表达式> then-(pl/sql和sql)-end if; (2)条件语句II if-then-e ...

  7. Oracle入门基础(十一)一一PL/SQL基本语法

    1.打印Hello World declare--说明部分 begin--程序dbms_output.put_line('Hello World'); end; 2.引用型变量 查询并打印7839的姓 ...

  8. Oracle PL/SQL编程之变量

    注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型( ...

  9. Oracle数据库第四课——PL/SQL中的条件控制

    知识点: PL/SQL 有 3 种类型的条件控制结构:IF.ELSIF 和 CASE 语句.掌握 IF 语句的用法, 掌握 ELSIF 语句的用法, 理解嵌套 IF 语句的用法, 掌握 CASE 语句 ...

最新文章

  1. 转载 想要在项目中引入其他项目的方法为
  2. 太阳能正在崛起 光伏养老蔚然成风
  3. nginx反向代理配置如何去除前缀
  4. Python弹窗提示警告框MessageBox
  5. mac mysql本地连接数_Mac OS X下MySQL 5.0的默认连接数
  6. 用python写石头剪刀布_Python实现简单石头剪刀布游戏
  7. java中的pane,Java中scroll pane的使用(一)– 动态改变其client的大小 | 学步园
  8. 一键root+android+5.0,360一键rootv5.0.0最新版
  9. 埃及分数c语言实训报告,C语言实例 将真分数分解为埃及分数
  10. 加一度简答SEM竞价推广中遇到的4大难题
  11. RGB,ARGB颜色值的表示表示
  12. r语言中检测异常值_R中的异常值检测
  13. ajaxPro.dll基础教程
  14. 手机ZTE中兴U802 U807手机解锁图案忘了 如何处理
  15. 史蒂芬·金《肖申克的救赎》读后感
  16. intel android haxm,使用Intel HAXM为Android模拟器加速,媲美真机
  17. 《小群效应》徐志斌踢馆,分享疫情下的私域流量新机遇
  18. 华为OD机试-优先级打印机
  19. Excel中使用填充命令填充数据的方法
  20. 如何在windows xp[ 下使用自带的播放器播放 mp4、AVI视频

热门文章

  1. java while do循环_c语言中,while 和 do while 循环的主要区别是( )
  2. go语言io reader_go语言之IO操作(待补充)
  3. C++实现具有[数组]相似特征的类DoubleSubscriptArray
  4. [蓝桥杯2015决赛]奇怪的数列-双指针+模拟
  5. linux权限746,linux文件权限学习笔一
  6. python获取文件夹下文件_Python 获取目录下的文件列表与内容
  7. Jira更换mysql数据库_JIRA6.0更换数据库到MYSQL
  8. Georgia and Bob(Poj 1704)Nim 博弈
  9. E:Three Blocks Palindrome(hard and easy)(树状数组 ? 前缀和?)
  10. Pool construction UVA - 1515 最小割模型