PL/SQL编程基础(二):变量的声明、赋值、(赋值、连接、关系、逻辑)运算符
变量的声明、赋值、运算符
1.声明并使用变量
- 变量可以在声明时赋值,也可以先定义后赋值;
- 使用%TYPE与%ROWTYPE可以根据已有类型定义变量。
PL/SQL是一种强类型的编程语言,所有的变量都必须在它声明之后才可以使用,变量都要求在DECLARE部分进行声明,而对于变量的名称也有如下的一些规定:
- 变量名称的组成可以由字母、数字、_、$、#等组成;
- 所有的变量名称要求以字母开头,不能是Oracle中的保留字(关键字);
- 变量的长度最多只能为30个字符。
声明变量的语法
- 所有的变量都要求在DECLARE部分之中进行,在定义变量的时候也可以为其赋默认值,变量声明语法如下:
- 变量名称 [CONSTANT] 类型 [NOT NULL] [:=value] ;
- 组成:
|
CONSTANT |
定义常量,必须在声明时为其赋予默认值; |
|
NOT NULL |
表示此变量不允许设置为NULL; |
|
:=value |
表示在变量声明时,设置好其初始化内容。 |
|
定义变量不设置默认值 |
|
DECLARE v_result VARCHAR2(30);----这里没有赋值 BEGIN DBMS_OUTPUT.put_line('v_result的内容是['||v_result||']'); END; / v_result的内容是[] |
|
定义变量 |
|
DECLARE v_resultA NUMBER := 100 ; -- 定义一个变量同时赋值 v_resultB NUMBER ; -- 定义一个变量没有设置内容 BEGIN v_resultb := 30 ; -- 没有区分大小写 DBMS_OUTPUT.put_line('计算的结果是:' || (v_resultA + v_resultB) ) ; END ; / |
|
定义非空变量 |
|
DECLARE v_resultA NUMBER NOT NULL := 100 ; -- 定义一个非空变量v_resultA,同时赋值 BEGIN DBMS_OUTPUT.put_line('v_resultA变量内容:' || (v_resultA) ) ; END ; / |
|
定义常量 |
|
DECLARE v_resultA CONSTANT NUMBER NOT NULL := 100 ; -- 定义一个常量同时赋值 BEGIN DBMS_OUTPUT.put_line('v_resultA常量内容:' || (v_resultA) ) ; END ; / |
2.使用%TYPE声明变量类型
- 在编写PL/SQL程序的时候,如果希望某一个变量与指定数据表中某一列的类型一样,则可以采用“变量定义 表名称.字段名称%TYPE”的格式,这样指定的变量就具备了与指定的字段相同的类型。
|
使用“%TYPE”定义变量 |
|
DECLARE eno emp.empno%TYPE ; -- 与empno类型相同 ename emp.ename%TYPE ; -- 与ename类型相同 BEGIN DBMS_OUTPUT.put_line('请输入雇员编号:') ; eno := &empno ; -- 由键盘输入雇员编号 SELECT ename INTO ename FROM emp WHERE empno=eno ; DBMS_OUTPUT.put_line('编号为:' || eno || '雇员的名字为:'|| ename) ; END ; / 编号为:7900雇员的名字为:JAMES |
3.使用%ROWTYPE声明变量类型
- 使用“%ROWTYPE”标记可以定义定义表中一行记录的类型。
- 当用户使用了“SELECT … INTO …”将表中的一行记录设置到了ROWTYPE类型的变量之中,就可以利用“rowtype变量.表字段”的方式取得表中每行的对应列数据。
|
使用ROWTYPE装载一行记录 |
|
DECLARE deptRow dept%ROWTYPE ; -- 装载一行dept记录 BEGIN SELECT * INTO deptRow FROM dept WHERE deptno=10 ; DBMS_OUTPUT.put_line('部门编号:'||deptRow.deptno || ',名称:' || deptRow.dname || ',位置:' || deptRow.loc) ; END ; / 部门编号:10,名称:ACCOUNTING,位置:NEW YORK |
运算符
赋值运算符、连接运算符、关系运算符、逻辑运算符
- 赋值运算符
- 赋值运算符的主要功能是将一个数值赋予指定数据类型的变量,在之前声明变量时已经使用此运算符,其使用语法如下所示。
- 变量 := 表达式 ;
- 连接运算符
- 连接运算符使用“||”即可完成操作。
- 关系运算符
- 关系运算符主要使用的是之前讲解限定查询时使用过的若干操作符
|
运算符 |
符号 |
描述 |
|
关系运算符 |
>、<、>=、<=、=、!=、<> |
进行大小或相等的比较,其中不等于有两种:!=和<> |
|
判断null |
IS NULL、IS NOT NULL |
判断某一列的内容是否是null |
|
逻辑运算符 |
AND、OR、NOT |
AND表示多个条件必须同时满足,OR表示只需要有一个条件满足即可,NOT表示条件去反,即:真变假、假变真 |
|
范围查询 |
BETWEE 最小值 AND 最大值 |
在一个指定范围中进行查找,查找结果为:“最小值<=内容<=最大值” |
|
范围查询 |
IN |
通过IN可以指定一个查询的范围 |
|
模糊查询 |
LIKE |
可以对指定的字段进行模糊查询 |
- 逻辑运算符
使用逻辑运算符可以连接多个布尔表达式的结果,在PL/SQL中逻辑运算符一共包含了三种:AND、OR、NOT。
|
与(AND) |
连接多个条件,多个条件同时满足时才返回TRUE,有一个条件不满足结果就是FALSE; |
|
或(OR) |
连接多个条件,多个条件之中只要有一个返回TRUE,结果就是TRUE,如果多个条件返回的都是FALSE,则结果才是FALSE; |
|
非(NOT) |
求反操作,可以将TRUE变FALSE、FALSE变TRUE。 |
|
使用赋值运算符 |
|
DECLARE v_info VARCHAR2(50) := '寻香径' ; v_url VARCHAR2(50) ; BEGIN v_url := 'http://www.cnblogs.com/thescentedpath/' ; DBMS_OUTPUT.put_line(v_info) ; DBMS_OUTPUT.put_line(v_url) ; END ; / |
|
字符串连接 |
|
DECLARE v_info VARCHAR2(50) := '寻香径' ; v_url VARCHAR2(50) ; BEGIN v_url := 'http://www.cnblogs.com/thescentedpath/' ; DBMS_OUTPUT.put_line(v_info || ',网址:' || v_url) ; END ; / |
|
使用关系运算符 |
|
DECLARE v_url VARCHAR2(50) := 'http://www.cnblogs.com/thescentedpath/' ; v_num1 NUMBER := 80 ; v_num2 NUMBER := 30 ; BEGIN IF v_num1 > v_num2 THEN DBMS_OUTPUT.put_line('第1个数字比第2个数字大。') ; END IF ; IF v_url LIKE '%wendy%' THEN DBMS_OUTPUT.put_line('网址之中包含wendy单词。') ; END IF ; END ; / |
|
观察逻辑运算结果 |
|
DECLARE v_flag1 BOOLEAN := TRUE ; v_flag2 BOOLEAN := FALSE ; v_flag3 BOOLEAN ; BEGIN IF v_flag1 AND ( NOT v_flag2 ) THEN DBMS_OUTPUT.put_line('v_flag1 AND ( NOT v_flag2 ) = TRUE') ; END IF ; IF v_flag1 OR v_flag3 THEN DBMS_OUTPUT.put_line('v_flag1 OR v_flag3 = TRUE') ; END IF ; IF v_flag1 AND v_flag3 IS NULL THEN DBMS_OUTPUT.put_line('v_flag1 AND v_flag3 的结果为NULL。') ; END IF ; END ; / |
PL/SQL编程基础(二):变量的声明、赋值、(赋值、连接、关系、逻辑)运算符的更多相关文章
- Oracle数据库编程:PL/SQL编程基础
2.PL/SQL编程基础: PL/SQL块: declare 定义部分 begin 执行部分 exception 异 ...
- 【PL/SQL编程基础】
[PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Cre ...
- PL/SQL编程基础(三):数据类型划分
数据类型划分 在Oracle之中所提供的数据类型,一共分为四类: 标量类型(SCALAR,或称基本数据类型) 用于保存单个值,例如:字符串.数字.日期.布尔: 标量类型只是作为单一类型的数据存在,有的 ...
- PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)
PL/SQL PL/SQL是Oracle在关系数据库结构化查询语言SQL基础上扩展得到的一种过程化查询语言. SQL与编程语言之间的不同在于,SQL没有变量,SQL没有流程控制(分支,循环).而PL/ ...
- PL/SQL编程基础——PL/SQL简介
课程教师:李兴华 课程学习者:阳光罗诺 日期:2018-07-28 知识点: 1. 了解PL/SQL的主要特点 2. 掌握PL/SQL块的基本结构 PL/SQL PL/SQL是Oracle在关系数据库 ...
- Oracle Pl/SQL编程基础
Pl/SQL简介 提高应用程序的运行性能, 提供模块化的程序设计, 自定义标示符, 具有过程语言控制结构, 良好的兼容性, 处理运行错误. Pl/SQL语言基础 sql是关系数据库的基本操作语言. s ...
- PL/SQL编程基础
1. PL/SQL块的基础结构 DECLARE /* * 定义部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ E ...
- PL/SQL 编程(二)游标、存储过程、函数
游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段. 可以将游标形象的看成一个变动的光标,他实质上是一个指针, ...
- PL/SQL编程基础(五):异常处理(EXCEPTION)
异常处理 异常产生所带来的问题: 使用EXCEPTION程序块进行异常处理: 实现用户自定义异常. 使用异常可以保证在程序中出现运行时异常时程序可以正常的执行完毕: 用户可以使用自定义异常进行操作. ...
随机推荐
- e667. 在给定图像中创建缓冲图像
An Image object cannot be converted to a BufferedImage object. The closest equivalent is to create a ...
- The configuration file 'appsettings.json' was not found and is not optional
问: .Net Core: Application startup exception: System.IO.FileNotFoundException: The configuration file ...
- list模块
一. concat(Things) -> string() Types: Things = [Thing] Thing = atom() | integer() | float( ...
- 从VirtualBox虚拟主机访问NAT客户机的方法
转自:http://www.jb51.net/os/other/352995.html VirtualBox对虚拟机支持几种不同的网络方式,其中一种是NAT网络.当虚拟机启用NAT后,VirtualB ...
- 将Excel中读取的科学计数法表示的Double数据转换为对应的字符串
已在SegmentFault提问,目前没有答案,自行实现如下: private static String getRealNumOfScientificNotation(String doubleSt ...
- 制作一款3D炸弹超人游戏
说起炸弹超人,相信很多朋友都玩过类似的游戏,其中最为人熟知的莫过于<泡泡堂>.该类型游戏需要玩家在地图中一边跑动一边放置炸弹,同时还要躲避敌方炸弹保护自己.最初的炸弹超人游戏都是2D的,今 ...
- 基于FP-Growth算法的关联性分析——学习笔记
数据挖掘 比之前的Ap快,因为只遍历两次. 降序 一.构建FP树 对频繁项集排序,以构成共用关系. 二.基于FP树的频繁项分析 看那个模式基出现过几次.频繁度. 看洗发液的 去掉频繁度小的 构建洗发液 ...
- Java精选笔记_其他IO流(ObjectInputStream、DataInputStream、PrintStream、标准输入输出流)
其他IO流 ObjectInputStream和ObjectOutputStream 如果希望永久将对象转为字节数据写入到硬盘上,即对象序列化,可以使用ObjectOutputStream(对象输出流 ...
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFacto
控制台: 2016-4-1 16:32:06 org.hibernate.annotations.common.Version <clinit> 信息: Hibernate Commons ...
- Android NDK开发-3-环境搭建
1.创建Android工程 2.打开android-ndk32-r10-windows-x86_64\android-ndk-r10\samples例子 3.打开hello-jni,拷贝java代码和 ...