文档章节

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

深圳大道
 深圳大道
发布于 2016/12/29 15:33
字数 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专题11之PLSQL入门

1、PLSQL工具 PL/SQL Developer的简介:PL/SQL Developer是一种专门用于开发、测试、调试和优化Oracle PL/SQL的一种工具,更是一个非常好用的Oracle的管理工具。 官网下载地址:https://www...

极客微信条
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

视频如何加水印?

很多视频制作者的视频都被他人盗用过,为了防止自己的劳动成果被他人窃取,给视频加水印对于视频制作者来说,是一件非常重要的事情。那么下面分享一个手机给视频加水印的方法,一起来看看吧!...

白米稀饭2019
22分钟前
3
0
004-Envelop-基于Blockstack的文件传输dapp

本篇文章主要介绍基于Blockstack的文件传输工具; ####A-链接地址 官网地址:https://envelop.app/ Github地址:https://github.com/envelop-app ####B-特性: 1: Share private files easil...

Riverzhou
25分钟前
5
0
SpringCloud——声明式调用Feign

Feign声明式调用 一、Feign简介 使用Ribbon和RestTemplate消费服务的时候,有一个最麻烦的点在于,每次都要拼接URL,组织参数,所以有了Feign声明式调用,Feign的首要目标是将Java HTTP客户端...

devils_os
30分钟前
5
0
《JAVA核心知识》学习笔记 (22. 数据结构)

22.1.1. 栈(stack) 栈( stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶 (top)。它是后进先出(LIFO)的。对栈的基本操作只有 push(进栈)和 pop(出栈...

Shingfi
36分钟前
5
0
你对AJAX认知有多少(1)?

AJAX(一) AJAX技术对于前段或者后端工程师来说,都是必不可缺的 那我们这几期都来细细品味一下AJAX的相关知识,直接上干货喽~ 1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么...

理性思考
44分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部