一、变量介绍

(1)变量的使用
可以使用变量:

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

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

  • 在声明部分中声明和初始化
  • 在可执行部分中使用和分配新值

变量可以是:

  • 作为参数传递给PL/SQL子程序
  • 指定保存PL/SQL子程序的输出

(3)声明和初始化PL/SQL变量
所有的PL/SQL变量都必须声明在引用之前的声明部分在PL/SQL块中。
声明的目的是分配为值存储空间,指定其数据类型,并将存储位置命名为你可以引用。
可以在声明语句中声明变量任何PL/SQL块、子程序或包。

二、变量声明和初始化变量

(1)语法

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

• identifier     定义该变量的名字

• CONSTANT  约束变量的值不可修改,常量必须在定义时初始化
• datatype     可以是标量、复合、引用或LOB数据类型。(本课程只包括标量、复合和LOB数据类型)。

• NOT NULL   约束该变量必须有值 (NOT NULL变量必须被初始化)
• Expr             可以是字面量表达式、另一个变量或包含操作符与函数的表达式的任何PL/SQL表达式

(2)习惯
小写斜体表示变量或占位符。
括号([…])包含一个或多个可选项,不插入括号。
竖杆代表在括号内两个或多个选项的选择,不要插入垂直条。

(3)声明和初始化变量

示例

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_name varchar2(50);
v_firstname varchar2(20):='rajiv';
v_lastname varchar2(20) default 'kumar';
c_display_no constant pls_integer := 20;
…

(4)在可执行部分中赋值

在声明变量之后,可以在可执行文件中使用它作为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;

在这个示例中,将值约翰赋值给可执行部分。变量的值是关联My name is:

输出是:

my name is:

my name is: John

在这个块中,变量v_myname被声明并初始化在声明部分。v_myname在初始化后持有为约翰的值。此值在可执行部分中被操作。

declare
v_myname varchar2(20):= 'john';
begin
v_myname := 'Steven';
dbms_output.put_line('my name is: '||v_myname);
end; 

输出:

my name is: Steven

(5)将变量作为参数传递给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;

将变量赋值给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入门(十四F)之PL/SQL定义变量相关推荐

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

    一.PL/SQL 基本语法 PL/SQL语言是模块式的过程化SQL,是oracle公司对SQL的扩展. (1) (2) (3) (5) (6) (7)数据类型 Number 数字型 Varchar2 ...

  2. FreeSql (二十四)Linq To Sql 语法使用介绍

    原本不支持 IQueryable 主要出于使用习惯的考虑,如果继承 IQueryable,编写代码的智能总会提示出现一堆你不想使用的方法(对不起,我有强迫症),IQueryable 自身提供了一堆没法 ...

  3. 用oracle怎么测试,oracle – 如何(单位)测试数据密集的PL / SQL应用程序

    有几种不同的PL / sql测试工具. Steven Feuerstein已经写了两个 utplsql和 Quest Code Tester for Oracle(以前的QUTE).我是utplsql ...

  4. Oracle基础--PL/SQL编程--变量

    一.PL/SQL变量概念 在Oracle中,有两种变量,一为普通变量(如char.varchar2.date.number.long等),二为特殊变量(引用型变量.记录型变量). 二.普通变量的声明 ...

  5. 基于oracle 的PL/SQL编程 -变量使用

    1. 需要开启的服务:  本机安装的oracle ,默认是开机启动服务的,开机时间太慢,关闭了,需要手动打开: OracleDBConsoleorcl OracleOraDb10g_home1iSQL ...

  6. oracle 调用java 类_oracle数据库PL SQL调用Java类程序代码

    作为JAVA程序员,对ORACLE的javasource一直是想找个机会下手的.呵呵!风高月夜,此时正下手之机. Oracle有提供一个叫"外部例程"来实现与其他编程语言的访问.例 ...

  7. Oracle入门(五F)之11g show spparameter 命令的使用

    转载自 oracle 11g show spparameter 命令的使用 当我们要获取oracle数据库当前的参数值时,可以通过查询v$parameter动态性能视图得到,当然了也可以使用show ...

  8. Oracle杀事务数据库崩溃,关于pl/sql dev窗口崩溃导致锁表

    今天在用pl/sql dev写sql的时候,刚刚写到一个select XXX from table for update,打开了锁的按钮,进行了数据修改,这个时候没有commit,因为临时有事,所以先 ...

  9. 第四章、PL/SQL基础

    1.PL/SQL概述 2.PL/SQL块结构 3.分支语句的使用 4.循环语句的使用 5.异常处理的使用 6.记录的使用 PL/SQL块结构 PL/SQL块结构如下 DECLARE ... BEGIN ...

最新文章

  1. 如何识别和避免间谍软件
  2. 华为鸿蒙OS发布!余承东:随时可替换安卓;方舟编译器将支持混合编译
  3. ObjectArx R14-2007下载地址
  4. hbase java api最新版本_HBase基本命令与新版本Java API
  5. 计算语言学(Computational Linguistics)【转】
  6. 暴涨2000+? 2021年软件测试平均薪资出来了,我坐不住了
  7. innobackupex 恢复到mysql目录_innobackupex备份mysql恢复后迁移到新的mysql实例
  8. 袁玉玮:简介人工智能在基金界的应用现状(四)
  9. UE4 中文文档阅读
  10. html5 easyui 布局,Easyui 在面板中创建复杂布局_EasyUI 插件
  11. 内网穿透的几种方式-免费与收费(钉钉、Frp、花生壳、nat123)
  12. 【Unity3D】分离路面导航
  13. 单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡
  14. 禁止浏览器对页面进行缩放
  15. C语言二位十进制计算器模数,十进制转二进制计算器
  16. ROS控制桌面机械手Dobot魔术师
  17. 15.2 Content-Length 实体的大小
  18. 实战6:基于OpenCV的人脸口罩识别检测详细教程
  19. 关于PSP-T082主板的鉴别方法细究
  20. html中comment标签作用,comment标记是什么?

热门文章

  1. [Redis6]常用数据类型_Zset有序集合
  2. 对象的单数组表示(用单数组实现链表-不一样的链表实现)
  3. 玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历
  4. 蓝桥杯2014届试题9题 小朋友排队(树状数组+类逆序对)
  5. java 导入导出 插件_Java最优的Excel导入/导出工具开发,你用过吗?
  6. Java线程的优先级
  7. CF1375G. Tree Modification(贪心,黑白染色)
  8. CF1497E2 Square-free division (hard version)
  9. P4345 [SHOI2015]超能粒子炮·改
  10. Inverse Pair