文档章节

PL/SQL中流程控制语句 和Oracle临时表

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 622
阅读 2
收藏 0
create global temporary table temp_dept
    (dno number,
     dname varchar2(10))
on commit delete rows;


insert into temp_dept values(10,'ABC');
drop table temp_dept

--Oracle的临时表和SQL Server的临时表概念不一样。 
  
--SQL Server的临时表,是“临时”创建的表,用完就没有这个表了。 
--而Oracle的“临时”表,实际上,表是“永久”的,数据是“临时”的。



--条件控制语句
--1、只有IF的条件控制语句
IF concition THEN
  STATEMENTS;
END IF;
--请看以下示例:
DECLARE
salaryAVG number(7,2);
empSalary number(7,2);
BEGIN
SELECT AVG(SAL) INTO salaryAVG FROM scott.emp;
SELECT SAL INTO empSalary FROM scott.emp WHERE EMPNO=&eno;
IF empSalary>salaryAVG THEN
  DBMS_OUTPUT.PUT_LINE('该职工工资超过了平均线'||salaryAVG);
END IF;
END;

--2、IF、ELSE语句
IF condition THEN
  STATEMENTS;
ELSE
  STATEMENTS;
END IF;
--请看以下示例:
DECLARE
salaryAVG number(7,2);
empSalary number(7,2);
BEGIN
SELECT AVG(SAL) INTO salaryAVG FROM scott.emp;
SELECT SAL INTO empSalary FROM scott.emp WHERE EMPNO=&eno;
IF empSalary>salaryAVG THEN
  DBMS_OUTPUT.PUT_LINE('该职工工资超过了平均线'||salaryAVG);
ELSE
  DBMS_OUTPUT.PUT_LINE('该职工工资没有超过平均线'||salaryAVG);
END IF;
END;

--3、IF ESLEIF ELSE语句
IF condition THEN
  STATEMENTS;
ELSIF condition THEN 
  STATEMENTS;
ELSE
  STATEMENTS;
END IF;
--请看以下示例:
DECLARE
empSalary number(7,2);
BEGIN
SELECT SAL INTO empSalary FROM scott.emp WHERE EMPNO=&eno;
IF empSalary<2000 THEN
  DBMS_OUTPUT.PUT_LINE('需交税0元');
ELSIF empSalary<4000 THEN
  DBMS_OUTPUT.PUT_LINE('需交税'||(empSalary*0.15-175)||'元');
ELSE 
  DBMS_OUTPUT.PUT_LINE('需交税'||(empSalary*0.25-375)||'元');
END IF;
END;

--4、CASE语句
--单一值进行比较:
CASE selector
  WHEN expression1 THEN result1;
  WHEN expression2 THEN result2;
  WHEN expression3 THEN result3;
  ELSE result4;
END CASE;
--请看以下示例:
DECLARE
eno NUMBER(2);
BEGIN
eno:=&no;
CASE eno
  WHEN 10 THEN DBMS_OUTPUT.PUT_LINE('部门1');
  WHEN 20 THEN DBMS_OUTPUT.PUT_LINE('部门2');
  WHEN 30 THEN DBMS_OUTPUT.PUT_LINE('部门3');
  ELSE DBMS_OUTPUT.PUT_LINE('没有该部门');
END CASE;
END;
--多重条件进行比较:
CASE
  WHEN expression1 THEN result1;
  WHEN expression2 THEN result2;
  WHEN expression3 THEN result3;
  ELSE result4; 
END CASE;

--二、循环控制语句
--1、LOOP循环
LOOP
  STATEMENTS;
END LOOP;
--示例1:
DECLARE
a int;
BEGIN
a:=0;
LOOP
  IF a=10 THEN
    EXIT;
  END IF;
DBMS_OUTPUT.PUT_LINE(a);
a:=a+1;
END LOOP;
END;

--示例2:
DECLARE
a int;
BEGIN
a:=0;
LOOP
  EXIT WHEN a=10;
DBMS_OUTPUT.PUT_LINE(a);
a:=a+1;
END LOOP;
END;

--2、WHILE循环

--示例1:
DECLARE
a int;
BEGIN
a:=0;
WHILE a<10 LOOP
  DBMS_OUTPUT.PUT_LINE(a);
  a:=a+1;
END LOOP;
END;

--3、FOR循环

--示例1:
BEGIN
FOR a IN 0..9 LOOP
DBMS_OUTPUT.PUT_LINE(a);
END LOOP;
END;

--4、多重循环与标签
--示例1:
 DECLARE
 result INT;
 BEGIN
 <<outer>>
 FOR i IN 1..10 LOOP
   <<inner>>
   FOR j IN 1..10 LOOP
     result:=i*j;
     EXIT outer WHEN result=10;
     EXIT WHEN result=5;
     DBMS_OUTPUT.PUT_LINE('内:'||result);
   END LOOP inner;
   DBMS_OUTPUT.PUT_LINE('外:'||result);
 END LOOP outer;
 DBMS_OUTPUT.PUT_LINE('最后:'||result);
 END;

--三、顺序控制语句
--1、GOTO语句
  --语法:GOTO labelName;
--2、NULL语句
   --NULL;语句不执行任何操作,直接传递到下一条语句。

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/8027944

共有 人打赏支持
深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
PL/SQL基础语法

前言 享受自由。 PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理...

huster_zdf
2018/01/14
0
0
【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

《ORACLE PL/SQL编程详解》 系列文章目录导航 ——通过知识共享树立个人品牌。 本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最“实在、经典”的写ORACLE PL/SQL编程...

yonghu86
2012/07/30
0
0
每周一书《Oracle 12 c PL(SQL)程序设计终极指南》

本周为大家送出的书是《Oracle 12 c PL(SQL)程序设计终极指南》,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著。 内容简介: 《Oracle 12c PL/SQL程序设计终极指南》志在打造PL/SQL领...

zting科技
2017/12/11
0
0
2.0解析系列 | OceanBase 2.0——第一款支持“存储过程”的原生分布式数据库

OB君:本文是 “OceanBase 2.0 技术解析系列” 的第八篇文章,今天我们来说说2.0版本最标志性、最不得不提的新特性——存储过程。在为数不多的原生分布式数据库中,OceanBase 2.0是第一款支持...

荔子liqi
2018/11/05
0
0
ORACLE PL/SQL编程详解

SQL语言只是访问、操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发。PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下...

whshurk
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

容器服务

简介 容器服务提供高性能可伸缩的容器应用管理服务,支持用 Docker 和 Kubernetes 进行容器化应用的生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。 产品架构 容器服务...

狼王黄师傅
昨天
3
0
高性能应用缓存设计方案

为什么 不管是刻意或者偶尔看其他大神或者大师在讨论高性能架构时,自己都是认真的去看缓存是怎么用呢?认认真真的看完发现缓存这一块他们说的都是一个WebApp或者服务的缓存结构或者缓存实现...

呼呼南风
昨天
12
0
寻找一种易于理解的一致性算法(扩展版)

摘要 Raft 是一种为了管理复制日志的一致性算法。它提供了和 Paxos 算法相同的功能和性能,但是它的算法结构和 Paxos 不同,使得 Raft 算法更加容易理解并且更容易构建实际的系统。为了提升可...

Tiny熊
昨天
2
0
聊聊GarbageCollectionNotificationInfo

序 本文主要研究一下GarbageCollectionNotificationInfo CompositeData java.management/javax/management/openmbean/CompositeData.java public interface CompositeData { public Co......

go4it
昨天
3
0
阿里云ECS的1M带宽理解

本文就给大家科普下阿里云ECS的固定1M带宽的含义。 “下行带宽”和“上行带宽” 为了更好的理解,需要先给大家解释个词“下行带宽”和“上行带宽”: 下行带宽:粗略的解释就是下载数据的最大...

echojson
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部