Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Oracle PL/SQL例10:表达式

Oracle PL/SQL例10:表达式

作者头像
SQLplusDB
发布于 2022-12-20 04:02:08
发布于 2022-12-20 04:02:08
30000
代码可运行
举报
运行总次数:0
代码可运行

编者按:

越是在动荡的情况下,越要建立自己的内心之锚,思考自己本身的特质。

最好的学习是实践加上看官方文档。官方文档中的代码例更是精华和重点所在。

IT行业如此,编程如此,Oracle PL/SQL的学习更是如此。

本系列以摘自《Database PL/SQL Language Reference》的PL/SQL代码例为主进行介绍。

【免责声明】本公众号文章仅代表个人观点,与任何公司无关。

编辑|SQL和数据库技术(ID:SQLplusDB)

Oracle PL/SQL例

Oracle PL/SQL编程基础 Oracle PL/SQL例2:处理查询的结果行(基础循环) Oracle PL/SQL例3:使用双引号 Oracle PL/SQL例4:文字(Literals)换行的处理 Oracle PL/SQL例5:注释 Oracle PL/SQL例6:声明变量/常量 Oracle PL/SQL例7:%TYPE 属性 Oracle PL/SQL例8:标识符引用

这里介绍各种操作的表达式和运算符

  1. 连接运算符

例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE
  x VARCHAR2(4) := 'suit';
  y VARCHAR2(4) := 'case';
BEGIN
  DBMS_OUTPUT.PUT_LINE (x || y);
END;
/
 结果:
 suitcase

例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
  DBMS_OUTPUT.PUT_LINE ('apple' || NULL || NULL || 'sauce');
END;
/
 输出:
applesauce

2. 运算符的优先级

下表的运算符的优先级由高到低。

可以使用圆括号控制运算符的优先级别。

例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE
  a INTEGER := 1+2**2;
  b INTEGER := (1+2)**2;
BEGIN
  DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));
  DBMS_OUTPUT.PUT_LINE('b = ' || TO_CHAR(b));
END;
/
输出:
a = 5
b = 9

例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE
  a INTEGER := ((1+2)*(3+4))/7;
BEGIN
  DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));
END;
/
输出:
a = 3

例3:通过括号增加可读性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE
  a INTEGER := 2**2*3**2;
  b INTEGER := (2**2)*(3**2);
BEGIN
  DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));
  DBMS_OUTPUT.PUT_LINE('b = ' || TO_CHAR(b));
END;
/
输出:
a = 36
b = 36

例4:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE
  salary      NUMBER := 60000;
  commission  NUMBER := 0.10;
BEGIN
  -- Division has higher precedence than addition:
  
  DBMS_OUTPUT.PUT_LINE('5 + 12 / 4 = ' || TO_CHAR(5 + 12 / 4));
  DBMS_OUTPUT.PUT_LINE('12 / 4 + 5 = ' || TO_CHAR(12 / 4 + 5));
  
 -- Parentheses override default operator precedence:
 
  DBMS_OUTPUT.PUT_LINE('8 + 6 / 2 = ' || TO_CHAR(8 + 6 / 2));
  DBMS_OUTPUT.PUT_LINE('(8 + 6) / 2 = ' || TO_CHAR((8 + 6) / 2));
 
  -- Most deeply nested operation is evaluated first:
 
  DBMS_OUTPUT.PUT_LINE('100 + (20 / 5 + (7 - 3)) = '
                      || TO_CHAR(100 + (20 / 5 + (7 - 3))));
 
  -- Parentheses, even when unnecessary, improve readability:
 
  DBMS_OUTPUT.PUT_LINE('(salary * 0.05) + (commission * 0.25) = '
    || TO_CHAR((salary * 0.05) + (commission * 0.25))
  );
 
  DBMS_OUTPUT.PUT_LINE('salary * 0.05 + commission * 0.25 = '
    || TO_CHAR(salary * 0.05 + commission * 0.25)
  );
END;
/
 
 输出:
 5 + 12 / 4 = 8
12 / 4 + 5 = 8
8 + 6 / 2 = 11
(8 + 6) / 2 = 7
100 + (20 / 5 + (7 - 3)) = 108
(salary * 0.05) + (commission * 0.25) = 3000.025
salary * 0.05 + commission * 0.25 = 3000.025
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SQL和数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Oracle PL/SQL入门语法点
PL_SQL:带有分支和循环,面向过程 匿名块: declare(可选,声明各种变量和游标的地方) begin(必要的,从此开始执行) exception(抓取到异常后执行的) end; [sql] view plaincopy set serveroutput on;(默认是关闭) --最简单的PL/SQL语句块 begin dbms_output.put_line('HelloWorld!'); end; --最简单的语句块 declare v_name varchar2(20); be
java干货
2021/02/19
4980
Oracle数据库,实例解析PL/SQL控制结构
控制结构在程序中就是一种程序运行的逻辑,一般情况下有顺序结构,选择结构,循环结构。PL/SQL控制结构也是由上述的3种逻辑结构组成,往往由以下几个语句来实现。
用户1289394
2021/03/29
4860
【PL/SQL编程基础】
【PL/SQL编程基础】 语法: declare 声明部分,例如定义变量、常量、游标 begin 程序编写,SQL语句 exception 处理异常 end; / 正斜杠表示执行程序快 范例 -- Created on 2016/8/22 by VITAS declare 定义变量 v_num number; v_eno number; v_ename varchar2(10); begin v_num:=234; v_eno:=&e
代码改变世界-coding
2018/07/03
8580
PL/SQL学习笔记-变量作用域及数据类型深入
以上为引用一本书的代码(Oracle Database 11g PL/SQL程序设计) 输出为
liulun
2022/05/09
2040
PL/SQL 编程(一)基础,变量,分支,循环,异常
SQL和PL/SQL: SQL 结构化查询语言(Structural Query Language),是用来访问和操作关系型数据库的一种标准通用语言,属于第四代语言(4GL)。可以方便的调用相应语句来去的结果,特点是非过程化,使用的时候不用指明执行的具体方法,不用关注实现的细节,但是某些情况下满足不了复杂业务流程的需求。 PL/SQL是 Procedure Language & Structured Query Language 的缩写。属于第三代语言(3GL),是一种过程化语言。PL/SQL是对SQL语言
二十三年蝉
2018/02/28
1.7K0
PL/SQL 编程(一)基础,变量,分支,循环,异常
PL/SQL 入门学习(一)
在学校的时候虽说上过PL/SQL这门课,然并卵,只恨当时啊!工作关系,需要用到Oracle存储过程。我就简单看了一些教程,特此记录一下。
全栈程序员站长
2022/09/24
5830
PL/SQL 入门学习(一)
PL/SQL 集合的方法
    PL/SQL中提供了常用的三种集合联合数组、嵌套表、变长数组,而对于这几个集合类型中元素的操作,PL/SQL提供了相应的函数或过程来操 纵数组中的元素或下标。这些函数或过程称为集合方法。一个集合方法就是一个内置于集合中并且能够操作集合的函数或过程,可以通过点标志 来调用。本文主要描述如何操作这些方法。 一、集合类型提供的方法与调用方式 1、集合的方法与调用方式     EXISTS         函数EXISTS(n)在第n个元素存在的情况下会返回TRUE,否则返回FALSE。             通常使用EXISTS和DELETE来维护嵌套表。其中EXISTS还可以防止引用不存在的元素,避免发生异常。         当下标越界时,EXISTS会返回FALSE,而不是抛出SUBSCRIPT_OUTSIDE_LIMIT异常。     COUNT         COUNT能够返回集合所包含的元素个数,对于大小不确定的情形则COUNT非常有用。         可以在任何可以使用整数表达式的地方使用COUNT函数,如作为for循环的上限。         计算元素个数时,被删除的元素不会被count所统计。         对于变长数组来说,COUNT值与LAST值恒等。         对于嵌套表来说,正常情况下COUNT值会和LAST值相等。但是,当我们从嵌套表中间删除一个元素,COUNT值就会比LAST值小。     LIMIT         用于检测集合的最大容量         由于嵌套表和关联数组都没有上界限制,所以LIMIT总会返回NULL。         对于变长数组,LIMIT会返回它所能容纳元素的个数最大值,该值是在变长数组声明时指定的,并可用TRIM和EXTEND方法调整。     FIRST,LAST         FIRST和LAST会返回集合中第一个和最后一个元素在集合中的下标索引值。         对于使用VARCHAR2类型作为键的关联数组来说,会分别返回最低和最高的键值;键值的高低顺序是基于字符串中字符的二进制值。         但是,如果初始化参数NLS_COMP被设置成ANSI的话,键值的高低顺序就受初始化参数NLS_SORT所影响了。         空集合的FIRST和LAST方法总是返回NULL。只有一个元素的集合,FIRST和LAST会返回相同的索引值。         对于变长数组,FIRST恒等于1,LAST恒等于COUNT。         对于嵌套表,FIRST通常返回1,如果删除第一个元素,则FIRST的值大于1,如果删除中间的一个元素,此时LAST就会比COUNT大。         在遍历元素时,FIRST和LAST都会忽略被删除的元素。     PRIOR,NEXT,         PRIOR(n)会返回集合中索引为n的元素的前驱索引值;NEXT(n)会返回集合中索引为n的元素的后继索引值。         如果n没有前驱或后继,PRIOR(n)或NEXT(n)就会返回NULL。         对于使用VARCHAR2作为键的关联数组来说,它们会分别返回最低和最高的键值;键值的高低顺序是基于字符串中字符的二进制值。         PRIOR和NEXT不会从集合的一端到达集合的另一端,即最末尾元素的的next不会指向集合中的first。         在遍历元素时,PRIOR和NEXT都会忽略被删除的元素,即如果prior(3)之前的2被删除则指向1,如果1也被删除则返回null。     EXTEND         用于扩大嵌套表或变长数组的容量,该方法不能用于联合数组。         EXTEND有三种形式             EXTEND 在集合末端添加一个空元素             EXTEND(n) 在集合末端添加n个空元素             EXTEND(n,i) 把第i个元素拷贝n份,并添加到集合的末端         对嵌套表或变长数组添加了NOT NULL约束之后,不能使用EXTEND的前两种形式。         EXTEND操作的是集合内部大小,其中也包括被删除的元素。所以,在计算元素个数的时候,EXTEND也会把被删除的元素考虑在内。         对于使用DELETE方法操作的元素,PL/SQL会保留其占位符,后续可以重新利用。     TRIM         从集合的末尾删除一个(TRIM)或指定数量TRIM(n)的元素,PL/SQL对TRIM掉的元素不再保留占位符。         如果n值过大的话,TRIM(n)就会抛出SUBSCRIPT_BEYOND_COUNT异常。         通常,不要同时使用TRIM和DELETE方法。可把嵌套
Leshami
2018/08/14
7360
PL/SQL学习笔记_03_存储函数与存储过程
ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数。
shirayner
2018/08/10
4070
PL/SQL编程基础简介及实践
1、开始(p1~p2) 2、背景介绍(p3) 3、特性优点(p4~p5) 4、使用说明(p6) 5、语法结构(p7) 6、命名参考(p8~p9) 7、复合类型(p10~p16) 8、运算符(p17) 9、流程控制语句(p18~p28) 10、异常和错误处理(p29~32) 11、函数与存储过程(p33~p41) 12、结束(p42)
星哥玩云
2022/08/16
1.5K0
Oracle PL/SQL例8:标识符引用
本系列以摘自《Database PL/SQL Language Reference》的PL/SQL代码例为主进行介绍。
SQLplusDB
2022/12/20
2980
一个oracle蠕虫病毒 (r4笔记第60天)
关于计算机病毒,说起来内容就很丰富了,但是第一次听到关于oracle中的病毒时,却感觉很新鲜。这是一个蠕虫病毒,距离现在已经有10年了,但是现在看起来还是能够借鉴不少精华的东西。把里面的一部分内容能够应用到实际中还是很不错的选择。 说起这个病毒,还有点小插曲。2005年10 月 31 日,有一个匿名者在 Full-disclosure(FD) 邮件列表里投递了一篇名为 Trick or treat Larry(很明显是对 Larry Ellison 的一个小玩笑) 的邮件。完全用 PL/SQL 写的蠕虫就这
jeanron100
2018/03/15
7220
PL/SQL --> DBMS_DDL包的使用
为了便于建立性能良好的PL/SQL程序,Oracle提供了大量的系统包供使用。Oracle提供的这些包扩展并增强了数据库的一些功能,以及突
Leshami
2018/08/07
1.1K0
PL/SQL 编程(二)游标、存储过程、函数
游标--数据的缓存区 游标:类似集合,可以让用户像操作数组一样操作查询出来的数据集,实质上,它提供了一种从集合性质的结果中提取单条记录的手段。 可以将游标形象的看成一个变动的光标,他实质上是一个指针,在一段Oracle存放数据查询结果集或者数据操作结果集的内存中,这个指针可以指向结果集任何一条记录。 游标分静态游标和REF游标两类,静态游标包含显式游标和隐式游标。 显式游标: 在使用之前必须有明确的游标声明和定义,这样的游标定义会关联数据查询语句,通常会返回一行或多行。打开游标后,用户可以利用游标的位置对结
二十三年蝉
2018/02/28
3.8K0
PL/SQL学习笔记_01_基础:变量、流程控制
PL/SQL语句可以在Oracle客户端的 SQL窗口或者 command  窗口中运行
shirayner
2018/08/10
8770
PL/SQL学习笔记_01_基础:变量、流程控制
Oracle PL/SQL基础知识及应用案例
本文介绍了Oracle PL/SQL的基础知识,包括概述和优势、数据类型和变量、控制结构以及异常处理。通过具体的PL/SQL代码示例和运行结果,展示了这些基础知识的实际应用。
GeekLiHua
2025/01/21
1620
PL/SQL --> 游标
映射在结果集中某一行数据的具体位置,类似于C语言中的指针。即通过游标方式定位到结果集中某个特定的行,然后根据业务需求
Leshami
2018/08/07
1.1K0
Oracle-PL/SQL基础
pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入Sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。
小小工匠
2021/08/16
1.8K0
Oracle SQL 异常处理
有预定义异常 与 用户自定义异常 还有 raise_application_error()函数 raise_application_error() 只能把异常抛出而不能处理异常。
星哥玩云
2022/08/17
7030
Oracle SQL 异常处理
PL/SQL --> 动态SQL
使用动态SQL是在编写PL/SQL过程时经常使用的方法之一。很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行
Leshami
2018/08/07
2.3K0
PL/SQL --> 异常处理(Exception)
Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。为了提高程序的健壮性,可以在PL/SQL块中引
Leshami
2018/08/07
1.7K0
相关推荐
Oracle PL/SQL入门语法点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档