热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

PL/SQL中流程控制语句和Oracle临时表[sql]createglobaltemporarytabletemp_dept(dnonumber,dnamevarchar2(10))oncommitdeleterows;insertintotemp_deptvalues(10,'...

PL/SQL中流程控制语句和Oracle临时表
 
[sql] 
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;  www.2cto.com    
--请看以下示例:  
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  www.2cto.com    
 
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(&#39;需交税0元&#39;);  
ELSIF empSalary<4000 THEN  
  DBMS_OUTPUT.PUT_LINE(&#39;需交税&#39;||(empSalary*0.15-175)||&#39;元&#39;);  
ELSE   
  DBMS_OUTPUT.PUT_LINE(&#39;需交税&#39;||(empSalary*0.25-375)||&#39;元&#39;);  
END IF;  
END;  
  www.2cto.com    
--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(&#39;部门1&#39;);  
  WHEN 20 THEN DBMS_OUTPUT.PUT_LINE(&#39;部门2&#39;);  
  WHEN 30 THEN DBMS_OUTPUT.PUT_LINE(&#39;部门3&#39;);  
  ELSE DBMS_OUTPUT.PUT_LINE(&#39;没有该部门&#39;);  
END CASE;  
END;  
--多重条件进行比较:  
CASE  www.2cto.com  
  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;  
www.2cto.com  
--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  
 <>  
 FOR i IN 1..10 LOOP  
   <>  
   FOR j IN 1..10 LOOP  
     result:=i*j;  
     EXIT outer WHEN result=10;  
     EXIT WHEN result=5;  
     DBMS_OUTPUT.PUT_LINE(&#39;内:&#39;||result);  
   END LOOP inner;  
   DBMS_OUTPUT.PUT_LINE(&#39;外:&#39;||result);  
 END LOOP outer;  
 DBMS_OUTPUT.PUT_LINE(&#39;最后:&#39;||result);  
 END;    www.2cto.com  
  
--三、顺序控制语句  
--1、GOTO语句  
  --语法:GOTO labelName;  
--2、NULL语句  
   --NULL;语句不执行任何操作,直接传递到下一条语句。  
 

推荐阅读
  • 本文总结了MySQL的一些实用技巧,包括查询版本、修改字段属性、添加自动增长字段、备份与恢复数据库等操作,并提供了一些常见的SQL语句示例。 ... [详细]
  • 作为一名Java Web开发新手,我在尝试将项目部署至Tomcat服务器并连接MySQL数据库时遇到了驱动加载失败的问题。经过一番排查和努力,最终找到了解决方案。 ... [详细]
  • 今天发现Mysql的主从数据库没有同步先上Master库:mysqlshowprocesslist;查看下进程是否Sleep太多。发现很正常。showmaster ... [详细]
  • 本文总结了WebSphere应用服务器出现宕机问题的解决方法,重点讨论了关键参数的调整,包括数据源连接池、线程池设置以及JVM堆大小等,旨在提升系统的稳定性和性能。 ... [详细]
  • 本文探讨了Java编程中MVC模式的优势与局限,以及如何利用Java开发一款基于鸟瞰视角的赛车游戏。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 基于Java的学生宿舍管理系统设计
    本论文探讨了如何利用Java技术设计和实现一个高效的学生宿舍管理系统。该系统旨在提高宿舍管理的效率,减少人为错误,同时增强用户体验。通过集成用户认证、数据管理和查询功能,系统能够满足学校宿舍管理的多样化需求。 ... [详细]
  • 本文介绍了MySQL数据库的安全权限管理思想及其制度流程,涵盖从项目开发、数据库更新到日常运维等多个方面的详细流程控制,旨在通过严格的流程管理和权限控制,有效预防数据安全隐患。 ... [详细]
  • MyBatis 开发技巧:延迟加载与查询缓存详解
    本文详细探讨了 MyBatis 中的延迟加载和查询缓存机制,旨在帮助开发者更好地理解和利用这些特性来优化数据库访问性能。 ... [详细]
  • 本项目展示了如何利用Java技术构建一个高效的考勤数据管理系统,特别适用于处理大量数据的情况,如企业员工考勤记录等。项目包括完整的源代码和详细的文档说明,适合用于毕业设计或实际工作场景。 ... [详细]
  • 本文详细解析了 SUCTF 2019 中的 EasySQL 题目,重点探讨了堆叠注入与 UNION 注入的区别及其应用条件。 ... [详细]
  • 本文详细探讨了Xshell6评估版到期后无法使用的常见问题,并提供了有效的解决方案,包括如何合法购买授权以继续使用。 ... [详细]
  • 理解 Hibernate 中的 fetch 和 lazy 属性配置
    本文探讨了在 Hibernate 中如何利用 fetch 和 lazy 属性来优化数据查询效率。通过调整这两个参数,可以有效管理数据库查询的性能,减少不必要的资源消耗。 ... [详细]
  • 深入理解聚簇索引与非聚簇索引及其优化策略
    本文探讨了数据库性能优化中的关键因素——索引,特别是聚簇索引与非聚簇索引的区别及应用场景。通过实例分析,提供了如何有效利用这两种索引来提升数据库查询性能的方法。 ... [详细]
  • 日志记录对于软件开发至关重要,特别是在调试和维护阶段。通过日志,开发者能够追踪错误源头并了解系统的运行状态。本文将探讨如何在Django框架中有效配置和使用日志记录功能。 ... [详细]
author-avatar
gunnerliang_851
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有