- 浏览: 362723 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (511)
- AgileMethodology (4)
- RDBMS (32)
- NoSQL (16)
- Java (27)
- Python (28)
- Maven (15)
- Linux (27)
- CommonUtils (13)
- IDE (8)
- JavaScript (17)
- jQuery (2)
- OSGi (2)
- JavaWeb (5)
- Spring (37)
- Struts2 (3)
- ORM (13)
- Ant (1)
- apache-tiles (1)
- FreeMarker (2)
- JSON (8)
- XML (1)
- JUnit (3)
- Lucene (1)
- Web Service (9)
- Design Pattern (13)
- Algorithm (21)
- JVM (14)
- Hadoop (16)
- Spark (5)
- Scala (31)
- Git (4)
- Server (3)
- Node.js (18)
- Concurrent (42)
- Lock (9)
- Collections (3)
- Network (11)
- MicroService (7)
- Docker (13)
- FP (20)
- spring.io (2)
- ELK (1)
- Kafka (5)
最新评论
PL/SQL流程控制结构包括:条件控制、循环控制、顺序控制。
条件控制
- IF...THEN...ENDIF结构
- IF...THEN...ELSE...ENDIF结构
DECLARE v_ename VARCHAR2 (20); v_sal NUMBER (7, 2); BEGIN SELECT ename, sal INTO v_ename, v_sal FROM emp WHERE empno = &eno; DBMS_OUTPUT.put_line (v_ename || '雇员的工资' || v_sal); IF v_sal < 1000 THEN DBMS_OUTPUT.put_line ('工资低于1000'); ELSE IF 1000 <= v_sal AND v_sal < 5000 THEN DBMS_OUTPUT.put_line ('工资在1000到5000之间'); ELSE DBMS_OUTPUT.put_line ('工资高于5000'); END IF; END IF; END; /
- IF...THEN...ELSEIF...ENDIF结构
DECLARE v_ename VARCHAR2 (20); v_hiredate DATE; v_bonus NUMBER (6, 2); BEGIN SELECT ename, hiredate INTO v_ename, v_hiredate FROM emp WHERE empno = &eno; IF v_hiredate > TO_DATE ('01-JAN-95') THEN v_bonus := 800; ELSIF v_hiredate > TO_DATE ('01-JAN-90') THEN v_bonus := 1600; ELSE v_bonus := 2400; END IF; DBMS_OUTPUT.put_line ( v_ename || '雇员的雇佣日期是' || v_hiredate || '、奖金是' || v_bonus); END; /
- case结构
example1
DECLARE v_ename VARCHAR2 (20); v_sal NUMBER (7, 2); BEGIN SELECT ename, sal INTO v_ename, v_sal FROM emp WHERE empno = 7788; DBMS_OUTPUT.put_line ( '雇员名称:' || v_ename || ' 工资:' || v_sal); CASE WHEN v_sal < 1000 THEN DBMS_OUTPUT.put_line ('工资低于1000'); WHEN 1000 <= v_sal AND v_sal < 5000 THEN DBMS_OUTPUT.put_line ('工资在1000到5000之间'); ELSE DBMS_OUTPUT.put_line ('工资高于5000'); END CASE; END; /
example2
DECLARE v_grade CHAR := 'B'; BEGIN CASE v_grade WHEN 'A' THEN DBMS_OUTPUT.put_line ('Excellent'); WHEN 'B' THEN DBMS_OUTPUT.put_line ('Very good'); WHEN 'C' THEN DBMS_OUTPUT.put_line ('Good'); ELSE DBMS_OUTPUT.put_line ('NO such grade'); END CASE; END; /
循环控制
- LOOP...ENDLOOP结构
DECLARE v_i NUMBER := 1; v_s NUMBER := 0; BEGIN LOOP EXIT WHEN v_i > 100; v_s := v_s + v_i; v_i := v_i + 1; END LOOP; DBMS_OUTPUT.put_line (v_s); END; /
- WHILE...LOOP...ENDLOOP结构
DECLARE v_i NUMBER := 1; v_s NUMBER := 0; BEGIN WHILE v_i <= 100 LOOP v_s := v_s + v_i; v_i := v_i + 1; END LOOP; DBMS_OUTPUT.put_line (v_s); END; /
- FOR...LOOP...ENDLOOP结构
DECLARE v_s NUMBER := 0; BEGIN FOR v_i IN 1 .. 100 LOOP v_s := v_s + v_i; END LOOP; DBMS_OUTPUT.put_line (v_s); END; /
顺序控制
顺序控制中用到的语句有:GOTO语句、NULL语句。
- GOTO语句
GOTO语句是一条无条件跳转语句,它能实现语句从一处无条件地跳转到一个用标签指定的另一条可执行语句处或一个 PL/SQL块。但过多地使用GOTO语句将导致复杂的结果,破坏程序的结构,使程序难以理解和维护。所以,一般只用在 从一个PL/SQL块中跳转到异常处理的语句前面。
DECLARE v_i NUMBER := 0; v_s NUMBER := 0; BEGIN <<label_1>> v_i := v_i + 1; IF v_i <= 100 THEN v_s := v_s + v_i; GOTO label_1; END IF; DBMS_OUTPUT.put_line (v_s); END; /
- NULL语句
NULL语句是一个可执行语句,但它是不执行任何操作的空语句或占位语句,即它什么操作也不做就将控制交给下一个语 句。NULL语句的作用是提高程序的可读性,保证其他语句结构的完整性、正确性。如,IF语句中的每个子句都必须包括 一个可执行语句,否则就会出现错误提示。
DECLARE v_empno emp.empno%TYPE; v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; v_comm emp.comm%TYPE; BEGIN v_empno := &eno; SELECT ename, sal INTO v_ename, v_sal FROM emp WHERE empno = v_empno; IF v_sal <= 3000 THEN v_comm := v_sal * 0.15; UPDATE emp SET comm = v_comm WHERE empno = v_empno; DBMS_OUTPUT.put_line (v_ename || ' 的补助是 ' || v_comm); ELSE NULL; END IF; END; /
当采用从上到下的设计思想来设计PL/SQL程序时,NULL语句是创造占位程序的一个方法。占位程序是一个假的子程序 (过程、函数),它可以帮助你推迟对子程序的定义或编写,直到调试完主程序为止。这样就不会因为编写细节二耽误其 他程序或主程序的开发。
发表评论
-
MySQL UNSIGNED
2019-06-26 13:31 378原创转载请注明出处:https://agilestyle. ... -
MySQL索引最左匹配原则
2018-11-14 12:44 2620原创转载请注明出处:http://agilestyle.i ... -
MySQL SQL Create demo
2018-10-22 15:10 381ddl demo CREATE TABLE IF NOT ... -
(转)MySQL Explain详解
2018-09-30 13:16 381作者:陆炫志 出处:xuanzhi的博客 http:// ... -
Mac上安装MySQL后zsh: command not found: mysql
2018-08-19 21:20 4069原创转载请注明出处:http://agilestyle.i ... -
MySQL key值的含义
2017-09-25 21:05 663PRI — 主键约束; UNI — 唯一约束; MU ... -
SQL常见笔试题
2017-09-06 23:00 385原创转载请注明出处:http://agilestyle.i ... -
MySQL扩展
2017-08-23 21:50 487原创转载请注明出处 ... -
表级锁、行级锁、页面锁
2017-04-17 21:30 491原创转载请注明出处 ... -
Oracle优化常见术语
2017-04-02 23:03 449原创转载请注明出处:http://agilestyle.i ... -
Oracle分区
2017-04-02 22:03 409原创转载请注明出处:http://agilestyle.i ... -
MySQL分区
2017-02-24 14:11 375原创转载请注明出处:http://agilestyle.i ... -
Oracle常见术语、操作、区别
2017-02-22 20:55 843原创转载请注明出处:http://agilestyle.i ... -
ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
2017-02-15 17:03 471原创转载请注明出处:http://agilestyle.i ... -
SQL UNION 操作符
2016-11-24 16:22 680原创转载请注明出处 ... -
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
2016-09-02 10:16 374use query below to check activ ... -
MySQL压缩版安装配置
2016-05-18 23:29 614原创装载请注明出处:http://agilestyle.i ... -
综合数据和分组函数
2016-01-30 21:41 578desc emp; COUNT函数 selec ... -
1NF、2NF、3NF
2016-01-28 02:53 409第一范式: 所有的键属性(列)都已定义 没有任何重复组 ... -
ORACLE11gR2完全卸载(转)
2015-12-19 16:45 15251. 停止“服务”中所有的ORCLE服务。 ...
相关推荐
PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...
Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...
PL/SQL是Oracle公司开发的一种过程化语言,全称为Procedural Language/Structured Query Language,它是SQL的一个扩展,专门用于处理Oracle数据库系统。这个“PL/SQL工具”显然是一个用于辅助管理和操作Oracle数据库...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...
"Oracle资料学习PL/SQL必备"这个主题涵盖了对Oracle数据库系统以及PL/SQL编程语言的学习资源,特别是针对那些希望深入理解并掌握PL/SQL的初学者或专业人士。PL/SQL的基础部分是了解和使用Oracle数据库的关键,它包括...
PL/SQL Developer是一款由Allround Automations公司开发的专业Oracle数据库开发工具,专为编写、调试、测试和管理PL/SQL代码而设计。标题中的“pl/sql developer11.0”指的是该软件的第11个主要版本。在本文中,我们...
《Oracle PL/SQL by Example(4th Edition)》是一本专为Oracle数据库用户设计的PL/SQL编程指南,尤其适合那些希望通过实践学习这一强大的过程式语言的开发者。本书的第四版详细介绍了Oracle PL/SQL的各种核心概念和...
### Oracle 9i PL/SQL程序设计笔记精要 #### PL/SQL基础知识概览 **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。...
PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
这个安装包结合了Version Control System (VCS)的功能,如Visual SourceSafe (VSS),使用户能够在PL/SQL Developer环境中直接进行版本控制操作。 PL/SQL Developer是一款流行的Oracle数据库开发工具,它提供了编写...
Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...
### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...
PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...
1. **PL/SQL编程支持**:PL/SQL Developer内置了强大的PL/SQL编辑器,支持语法高亮、自动完成、错误检查等功能,使开发人员能够高效编写PL/SQL代码。此外,还具备代码折叠、查找替换、书签设置等实用功能,提高了...
《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...
PL/SQL是Oracle数据库系统中的一个核心组件,全称为“Procedural Language/Structured Query Language”,它是SQL的扩展,增加了编程元素,使得开发者能够编写存储过程、函数、触发器等数据库应用程序。这篇博客主要...
PL/SQL Developer是一款由Allround Automations公司开发的专门用于Oracle数据库管理的集成开发环境(IDE)。这款软件为Oracle数据库管理员、开发人员和测试人员提供了便捷的SQL和PL/SQL编写、调试和执行功能。而“pl...
Oracle PL/SQL是一种强大的编程语言,它将数据库管理和应用程序逻辑紧密结合起来,是Oracle数据库系统中的核心组件之一。这本书“Oracle PL/SQL实例编程”显然旨在深入讲解如何利用PL/SQL进行实际开发工作,通过实例...
PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...