plsql判断和循环
if语句
语法1
如果条件成立,执行if和end if 之间的语句。
if 条件表达式 then
plsql语句;
end if;
语法2
if 条件表达式 then
条件成立时执行的语句;
else
条件不成立时执行的语句;
end if;
语法3
if 条件表达式1 then
条件1成立时执行的语句;
elsif 条件表达式2 then
条件2成立时执行的语句;
...
elsif 条件表达式n then
条件n成立时执行的语句;
else
所有条件都不成立时执行的语句;
end if;
例1
```
declare
test_scores number(4,1):=&请输入您的成绩;
begin
if test_scores>=90 and test_scores=80 and test_scores=70 and test_scores=60 and test_scores
例2
declare
test_scores1 number(4,1):=&请输入您的成绩;
begin
if test_scores1=60 then
dbms_output.put_line('您输入的成绩为'||test_scores1||' 经评测等级为'||'D');
elsif test_scores1=70 then
dbms_output.put_line('您输入的成绩为'||test_scores1||' 经评测等级为'||'C');
elsif test_scores1=80 then
dbms_output.put_line('您输入的成绩为'||test_scores1||' 经评测等级为'||'B');
elsif test_scores1=90 then
dbms_output.put_line('您输入的成绩为'||test_scores1||' 经评测等级为'||'A');
else
dbms_output.put_line('请您确认成绩后再试');
end if;
end;
case when语句
语法1(这种语法一般只用在sql语句中,它功能和decode函数一样)
case
when 条件表达式1 then
值1;
when 条件表达式2 then
值2;
...
when 条件表达式3 then
值2;
else
默认值
end case;
语法2
case 表达式
when 值1 then
plsql语句;
when 值2 then
plsql语句;
..
when 值3 then
plsql语句;
else
默认执行的语句;
end case;
例1
```
declare
v_scores number(4,1):=&请输入您的成绩;
v_output varchar2(50);
begin
v_output:=case
when v_scores=60 then 'D'
when v_scores=70 then 'C'
when v_scores=80 then 'B'
when v_scores=90 then 'A'
else '请您确认成绩后再试' end;
dbms_output.put_line('您输入的成绩为'||v_scores||'评测等级为'||v_output);
end;
```
例2
```
declare
v_grade varchar2(20):='A';
v_score varchar2(50);
begin
v_score:=case v_grade
when '不及格' then '成绩
loop
语法
loop
循环体(plsql语句);
退出循环条件;
循环变量控制语句;
end loop
循环打印1-10
```
declare
--声明一个变量作为循环变量
n number(6):=1;
begin
--循环打印
loop
--循环体语句,打印n的值
dbms_output.put_line(n);
--退出循环条件
exit when n=10;
--循环控制语句,修改循环变量n的值
n:=n+1;
end loop;
end;
```
循环打印1-10
declare
control_var number(2):=0;
begin
loop
if control_var>9 then
exit;
end if;
control_var:=control_var+1;
dbms_output.put_line(control_var);
end loop;
end;
while
如果循环条件成立,执行循环体和循环控制语句
直到循环条件不成立退出循环
while 循环条件 loop
循环体语句;
循环控制语句;
end loop;
循环打印1-10
```
declare
--声明一个变量作为循环变量
n number(10):=1;
begin
--while循环打印条件
while n
循环打印1-10
```
declare
n number(10):=0;
begin
while n
for循环
语法1
for 循环变量 in 数字集合 loop
循环体语句;
end loop;
数字集合的表示
1..10 表示1到10的自然数集合
循环打印1-10
```
begin
for i in 1..10 loop
dbms_output.put_line(i);
end loop;
end;
```
循环打印10-1
```
begin
for i in reverse 1..10 loop
dbms_output.put_line(i);
end loop;
end;
```
reverse表示集合顺序反转
语法2
for 循环变量 in select语句或者游标变量 loop
循环体语句;
end loop;
获取emp表中员工编号
```
begin
for v_empno in(select empno from emp) loop
dbms_output.put_line(v_empno.empno);
end loop;
end;
```
获取emp表中员工编号和工作
```
begin
for v_emp in(select * from emp) loop
dbms_output.put_line(v_emp.empno||','||v_emp.job);
end loop;
end;
```
获取emp表中全部数据
```
begin
for v_emp in(select * from emp) loop
dbms_output.put_line(rpad(v_emp.empno, 4,' ')||' , '||
nvl(rpad(v_emp.ename,10,' '),' ')||' , '||
nvl(rpad(v_emp.job,9,' '),' ')||' , '||
nvl(rpad(v_emp.mgr,4,' '),' ')||' , '||
nvl(to_char(v_emp.hiredate,'YYYYMMDD'),' ')||' , '||
nvl(rpad(v_emp.sal,4,' '),' ')||' , '||
nvl(rpad(v_emp.comm,7,' '),' ')||' , '||
nvl(rpad(v_emp.deptno,2,' '),' ')
);
end loop;
end;
```
退出循环
- exit退出整个循环
- continue退出本次循环
- return直接退出程序
for
for1
```
begin
for i in 1..9 loop
if i=5 then
dbms_output.put_line('我要退出了');
exit;
end if;
dbms_output.put_line(i);
end loop;
dbms_output.put_line('小**,我在循环体外');
end;
```
执行结果
```
1
2
3
4
我要退出了
小**,我在循环体外
```
for2
```
begin
for i in 1..9 loop
if i=5 then
dbms_output.put_line('我要退出了');
continue;
end if;
dbms_output.put_line(i);
end loop;
dbms_output.put_line('小**,我在循环体外');
end;
```
执行结果
1
2
3
4
我要退出了
6
7
8
9
小**,我在循环体外
for3
```
begin
for i in 1..9 loop
if i=5 then
dbms_output.put_line('我要退出了');
return;
end if;
dbms_output.put_line(i);
end loop;
dbms_output.put_line('小**,我在循环体外');
end;
```
执行结果
1
2
3
4
我要退出了
loop
loop
```
declare
v_control number(2) := 0;
begin
loop
v_control := v_control + 1;
if v_control = 5 then
continue;
end if;
if v_control = 10 then
exit;
end if;
dbms_output.put_line(v_control);
end loop;
dbms_output.put_line('小**,我在循环体外');
end;
```
执行结果
1
2
3
4
6
7
8
9
小**,我在循环体外
while
while
```
declare
v_control number(2):=0;
begin
while v_control
执行结果
1
2
3
4
6
7
8
9
goto(不常用)
执行到goto语句时,代码会回到标签所在位置,重新往下执行
标签
```
declare
--声明一个变量作为循环变量
n number:=1;
begin
>
dbms_output.put_line(n);
n:=n+1;
if n
plsql判断和循环的更多相关文章
- python之--条件判断和循环
Python之判断 和其他语言一样,python同样具有条件判断和循环的操作,比如我们可以编写一个简单的判断操作:使用if关键字可以达到判断的效果,如下例: >>> test_if ...
- python学习第六天 条件判断和循环
总归来讲,学过C语言的同学,对条件判断和循环并不陌生.这次随笔只是普及一下python的条件判断和循环对应的语法而已. 条件判断: 不多说,直接贴代码: age = 23 if age >= 6 ...
- 初学Java scirpt(判断、循环语句)
在编写代码时,我们经常需要为不同的判断结果来执行不同的动作以及需要反复执行同一段代码,这时我们就需要使用判断和循环语句来实现. 1.判断语句(if) 判断语句经常用的有(if......else).( ...
- python入门(11)条件判断和循环
python入门(11)条件判断和循环 条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: ag ...
- Python学习之条件判断和循环
#coding= utf-8 # 条件判断和循环 # 如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做 age1 = 20 if age1 >= 18: prin ...
- Python第四天 流程控制 if else条件判断 for循环 while循环
Python第四天 流程控制 if else条件判断 for循环 while循环 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Python第二天 ...
- 【转】shell编程下 特殊变量、test / [ ]判断、循环、脚本排错
[转]shell编程下 特殊变量.test / [ ]判断.循环.脚本排错 第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~] ...
- javascript中的分支判断与循环
分支判断与循环 分支结构 单一选择结构(if) 二路选择结构(if/else) 内联三元运算符 ?: 多路选择结构(switch) var condition = true; if (conditio ...
- python基础(二)条件判断、循环、格式化输出
继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...
随机推荐
- 通俗易懂了解Vue中nextTick的内部实现原理
1. 前言 nextTick 是 Vue 中的一个核心功能,在 Vue 内部实现中也经常用到 nextTick.在介绍 nextTick 实现原理之前,我们有必要先了解一下这个东西到底是什么,为什么要 ...
- Kubernetes 挂载文件到pod里面
下面以chart为例子: 1.创建ConfigMap,这里要注意config.js为挂载的文件名 [root@cn-hongkong templates]# cat app-config.yaml a ...
- python经典面试算法题1.4:如何对链表进行重新排序
本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.4 对链表按照如下要求重新排序 [微软笔试题] 难度系数: ...
- nsq (三) 消息传输的可靠性和持久化[二]diskqueue
上一篇主要说了一下nsq是如何保证消息被消费端成功消费,大概提了一下消息的持久化,--mem-queue-size 设置为 0,所有的消息将会存储到磁盘. 总有人说nsq的持久化问题,消除疑虑的方法就 ...
- vue 封装方法
个我这个是局部引入方法,下次有需要全局在补上(全局:在main.js文件引入封装的方法js文件,然后用Vue.prototype) 一.新建一个js文件loading.js 二.编辑loading.j ...
- RocketMQ消息轨迹-设计篇
目录 1.消息轨迹数据格式 2.记录消息轨迹 3.如何存储消息轨迹数据 @(本节目录) RocketMQ消息轨迹主要包含两篇文章:设计篇与源码分析篇,本节将详细介绍RocketMQ消息轨迹-设计相关. ...
- lqb 基础练习 特殊回文数
基础练习 特殊回文数 时间限制:1.0s 内存限制:512.0MB 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位 ...
- postgresql , etcd , patroni 做failover
os: centos 7.4etcd:3.2 主从IP信息192.168.56.101 node1 master192.168.56.102 node2 slave192.168.56.103 nod ...
- Ubuntu 16.04源码编译boost库 编写CMakeLists.txt | compile boost 1.66.0 from source on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/d5d4a460/,欢迎阅读! compile boost 1.66.0 from source on ubuntu 16.04 G ...
- 使用Docker搭建maven私服 及常规使用方法
安装-登录-配置 下载镜像 docker pull sonatype/nexus3 运行 docker run -d -p 9998:8081 --name nexus --restart=alway ...