`
LeeYee
  • 浏览: 72306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PL/SQL学习笔记[5]-流程控制语句

    博客分类:
  • SQL
阅读更多

1 条件分支语句

1.1 IF语句

语法

 写道
IF condition THEN
statements;
[ELSIF condition THEN
statements;]
[ELSE
statements;]
END IF;
 

 

示例

 

DECLARE
	v_age NUMBER(3);
BEGIN
	SELECT age INTO v_age FROM user
	WHERE lower(name) = lower('&&name');
	IF v_age < 20 THEN
		UPDATE user SET age = v_age*2 WHERE lower(name) = lower('&&name');
	ELSIF v_age < 40 THEN
	  UPDATE user SET age = v_age*3 WHERE lower(name) = lower('&&name');
	ELSE
		UPDATE user SET age = v_age/2 WHERE lower(name) = lower('&&name');
	END IF;
END;
 

 

1.2 CASE语句

语法

 

 写道
[单一条件]
CASE selector
WHEN expression1 THEN sequence_of_statements1;
WHEN expression1 THEN sequence_of_statements2;
...
WHEN expression1 THEN sequence_of_statementsN;
[ELSE sequence_of_statementsN+1;]
END CASE;

[多条件]

CASE
WHEN selector_condition1 THEN sequence_of_statements1;
WHEN selector_condition2 THEN sequence_of_statements2;
...
WHEN selector_conditionN THEN sequence_of_statementsN;
[ELSE sequence_of_statementsN+1;]
END CASE;
 

 

示例

 

DECLARE
	v_uid  user.uid%TYPE;
BEGIN
	v_uid := &id;
	CASE v_uid
		WHEN 1 THEN UPDATE user SET age = 20 WHERE uid = v_uid;
		WHEN 2 THEN UPDATE user SET age = 40 WHERE uid = v_uid;
		ELSE
			dbms_out.put_line('不存在该用户');
	END CASE;
END;

DECLARE
	v_uid  user.uid%TYPE;
BEGIN
	v_uid := &id;
	CASE 
		WHEN v_uid == 1 THEN UPDATE user SET age = 20 WHERE uid = v_uid;
		WHEN v_uid == 2 THEN UPDATE user SET age = 40 WHERE uid = v_uid;
		ELSE
			dbms_out.put_line('不存在该用户');
	END CASE;
END;
 

 

2 循环语句

2.1 LOOP 循环

语法

 

 写道
LOOP
statement1;
EXIT [WHEN condition];
END LOOP;

使用该语句statement1至少会被执行一次。相当于do...while

 

示例

 

DELCARE
	i INT :=1;
BEGIN
	LOOP
		UPDATE user SET createDate = SYSDATE WHERE uid = i;
		EXIT WHEN i = 10 ;
		i := i+1;
		
		
	END LOOP;
	COMMIT;
END;

 

2.2 WHILE 循环

语法

 

 写道
WHILE condition LOOP
statement1;
statement2;
...
END LOOP;
 

 

示例

 

DECLARE 
	i INT := 1;
BEGIN
	WHILE i <= 10 LOOP
		UPDATE user SET createDate = SYSDATE WHERE uid = i;
		i := i+1;
	END LOOP;
	COMMIT;			
END;
 

 

 

2.3 FOR 循环

语法

 

 写道
FOR counter IN [REVERSE]
min_bound..upper_bound LOOP
statement1;
statement1;
...
END LOOP;

 

counter : 循环控制变量,由Oracle隐含定义,不需要显示定义

min_bound、upper_bound :循环控制变量的上下界;

默认情况下FOR循环在每执行一次后,控制变量会自增一;如果指定REVERSE选项,则会减一

 

示例

 

BEGIN
	FOR i IN 1..10 LOOP
		UPDATE user SET createDate = SYSDATE WHERE uid = i;
	END LOOP;
	COMMIT;
END;
 

 

2.4 嵌套循环和标号

 

-- 该示例中的<<waibu>>、<<neibu>>为标号,该名称可以自定义。
DECLARE
	result INT;
BEGIN
	<<waibu>>
	FOR i IN 1..10 LOOP
		<<neibu>>
		FOR j IN 1..10 LOOP
		result := i * j;
		dbms_output.put_line(result);
		EXIT waibu WHEN result = 10; -- 当 result=10 时,退出外部循环,本例中是当i=5时退出。相当于调用break语句
		EXIT WHEN j = 2; -- 当 j = 2 时,退出内部循环。相当于调用break语句
		END LOOP neibu;
	END LOOP waibu;
	dbms_output.put_line(result);
END;
 

 

3 顺序控制语句

3.1 GOTO 语句

语法

 

 写道
GOTO label_name;

 

 GOTO语句用于跳转到特定标号处。一般不建议使用

 

示例

 

DECLARE
	i INT := 1; 
BEGIN 
	LOOP
		IF i = 10 THEN
			GOTO jump_loop;
		END IF;
		EXIT WHEN i > 11;
		dbms_output.put_line('i-->'||i); -- 这条语句是不会被执行的!
		i := i+1;
	END LOOP;
	<<jump_loop>>
		dbms_output.put_line('i == 10 ! ');
END;
 

 

3.2 NULL 语句

NULL 语句不执行任何操作,并且直接将控制传递到下一条语句。使用NULL可以提高PL/SQL程序的可读性

 

DECLARE
	v_uid user.uid%TYPE := &di;
	v_age user.age%TYPE;
BEGIN
	SELECT age INTO v_age FROM user WHERE uid = v_uid;
	IF v_age < 20 THEN
		UPDATE user SET age = 100 WHERE uid = v_uid;
		commit;
	ELSE
		NULL;
	END IF;
END;
 

 

0
0
分享到:
评论

相关推荐

    pl/sql学习笔记

    以下是对PL/SQL的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...

    PL/SQL学习笔记

    PL/SQL支持多种流程控制语句,包括条件语句(如IF和CASE)以及循环语句(如FOR、WHILE和LOOP)。这些控制语句用于实现程序的逻辑判断和重复执行等控制结构。 在PL/SQL中使用SQL语句时,分为DML语句(如INSERT、...

    PL/SQL学习教程,附笔记

    -- 执行部分,包含SQL语句和PL/SQL语句 EXCEPTION -- 异常处理部分,处理运行时错误 END; ``` #### 标识符 在PL/SQL中,标识符用于命名变量、常量、过程、函数等。它们必须遵循一定的命名规则,比如首字符必须是...

    我的PL/SQL学习笔记(一)

    在这个“我的PL/SQL学习笔记(一)”中,我们将探讨PL/SQL的基础知识,包括其语法结构、变量声明、流程控制以及如何与Oracle数据库中的数据进行交互。 首先,PL/SQL的基本结构分为声明部分、执行部分和异常处理部分...

    pl/sql数据库学习笔记

    PL/SQL数据库学习笔记 PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量...

    PL/SQl超级笔记

    PL/SQL提供了多种流程控制结构,如IF-THEN-ELSIF-ELSE、CASE、WHILE、FOR循环以及GOTO语句。这些结构使得程序可以根据条件执行不同的代码路径。 **SQL操作** PL/SQL可以直接嵌入SQL语句,进行数据的增删改查。例如...

    PL/SQL学习笔记6

    在PL/SQL编程中,游标是处理查询结果集的重要工具。它们允许程序逐行处理结果,而不是一次性加载所有数据,这对于大型数据集尤其有用,因为它可以节省内存并提高性能。下面将详细解释游标的基本概念、分类以及如何在...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。

    PL/SQL听课笔记

    ### PL/SQL听课笔记 #### 一、PL/SQL简介 **PL/SQL**(Procedural Language for SQL)是一种专门为Oracle数据库设计的过程化语言扩展。它是在标准SQL基础上增加了一系列高级编程特性,如变量、控制结构、函数、...

    PL/SQL学习笔记7

    在PL/SQL编程中,存储过程和函数是关键的组件,它们允许我们将可重用的代码逻辑存储在数据库中,以便于管理和调用。本文主要探讨了存储过程、函数以及程序包的概念,特点,创建方法,执行方式,权限管理以及参数处理...

    sql,PL/SQl学习笔记

    本文将深入探讨从"SQL,PL/SQL学习笔记"中提取的关键知识点,帮助编程人员更好地理解和运用这两种语言。 首先,我们关注SQL并行查询。通过`ALTER SESSION ENABLE PARALLEL DMl`,我们可以开启会话的并行DML操作,这...

    oracle/SQL和PL/SQL课堂笔记

    这篇课堂笔记主要涵盖了基础的SQL查询语法和部分PL/SQL概念。 首先,SQL查询的基础是从数据库中选择数据。`SELECT`语句用于指定需要选取的列,如`SELECT ename, sal, job FROM emp;`。字段顺序可以自由调整,例如`...

    pl/sqle学习笔记

    ### PL/SQL 学习笔记知识点详解 #### 1. PL/SQL 基本结构 - **DECLARE**: 在此部分声明变量、常量、数据类型及游标。 - **BEGIN**: 主程序体开始,可以包含任何合法的PL/SQL语句。 - **EXCEPTION**: 异常处理部分,...

    pl/sql学习小结笔记

    以上就是PL/SQL的基础知识,包括块的定义、时间类型、复合类型、变量声明、流程控制等,这些构成了编写PL/SQL程序的基础框架。理解并熟练掌握这些概念对于进行Oracle数据库的开发和管理至关重要。

    PL/SQL存储过程笔记

    PL/SQL(Procedure Language for SQL)是Oracle数据库的一种专用编程语言,它结合了SQL命令与过程化脚本,从而允许混合数据库查询与程序逻辑控制结构。存储过程是一种在数据库上创建并保存的过程,它由一系列SQL语句...

    PL/SQL文本文档

    执行部分包含SQL语句和PL/SQL控制结构;异常处理部分用于捕获和处理运行时错误。 2. **变量和数据类型**: PL/SQL支持多种内置数据类型,如NUMBER(数值型)、VARCHAR2(可变长度字符串)、DATE(日期时间)、...

    oracle笔记 (PL-SQL)

    Oracle笔记(PL-SQL)是关于数据库管理和编程的一个重要主题,主要聚焦于Oracle数据库系统中的结构化查询语言(SQL)的扩展——PL/SQL。PL/SQL是一种过程化语言,结合了SQL的功能,使得开发者能够编写复杂的数据库应用...

    Oracle PL SQL Programming 第五版-带书签目录超清文字版

    3. **PL/SQL流程控制**:深入探讨如何使用各种流程控制语句,如循环(FOR、WHILE)、分支(IF-THEN-ELSIF、CASE)以及GOTO语句。 4. **PL/SQL子程序**:介绍如何创建和调用过程和函数,包括参数模式、默认值、重载...

Global site tag (gtag.js) - Google Analytics