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;
分享到:
相关推荐
以下是对PL/SQL的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...
PL/SQL支持多种流程控制语句,包括条件语句(如IF和CASE)以及循环语句(如FOR、WHILE和LOOP)。这些控制语句用于实现程序的逻辑判断和重复执行等控制结构。 在PL/SQL中使用SQL语句时,分为DML语句(如INSERT、...
-- 执行部分,包含SQL语句和PL/SQL语句 EXCEPTION -- 异常处理部分,处理运行时错误 END; ``` #### 标识符 在PL/SQL中,标识符用于命名变量、常量、过程、函数等。它们必须遵循一定的命名规则,比如首字符必须是...
在这个“我的PL/SQL学习笔记(一)”中,我们将探讨PL/SQL的基础知识,包括其语法结构、变量声明、流程控制以及如何与Oracle数据库中的数据进行交互。 首先,PL/SQL的基本结构分为声明部分、执行部分和异常处理部分...
PL/SQL数据库学习笔记 PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量...
PL/SQL提供了多种流程控制结构,如IF-THEN-ELSIF-ELSE、CASE、WHILE、FOR循环以及GOTO语句。这些结构使得程序可以根据条件执行不同的代码路径。 **SQL操作** PL/SQL可以直接嵌入SQL语句,进行数据的增删改查。例如...
在PL/SQL编程中,游标是处理查询结果集的重要工具。它们允许程序逐行处理结果,而不是一次性加载所有数据,这对于大型数据集尤其有用,因为它可以节省内存并提高性能。下面将详细解释游标的基本概念、分类以及如何在...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。
### PL/SQL听课笔记 #### 一、PL/SQL简介 **PL/SQL**(Procedural Language for SQL)是一种专门为Oracle数据库设计的过程化语言扩展。它是在标准SQL基础上增加了一系列高级编程特性,如变量、控制结构、函数、...
在PL/SQL编程中,存储过程和函数是关键的组件,它们允许我们将可重用的代码逻辑存储在数据库中,以便于管理和调用。本文主要探讨了存储过程、函数以及程序包的概念,特点,创建方法,执行方式,权限管理以及参数处理...
本文将深入探讨从"SQL,PL/SQL学习笔记"中提取的关键知识点,帮助编程人员更好地理解和运用这两种语言。 首先,我们关注SQL并行查询。通过`ALTER SESSION ENABLE PARALLEL DMl`,我们可以开启会话的并行DML操作,这...
这篇课堂笔记主要涵盖了基础的SQL查询语法和部分PL/SQL概念。 首先,SQL查询的基础是从数据库中选择数据。`SELECT`语句用于指定需要选取的列,如`SELECT ename, sal, job FROM emp;`。字段顺序可以自由调整,例如`...
### PL/SQL 学习笔记知识点详解 #### 1. PL/SQL 基本结构 - **DECLARE**: 在此部分声明变量、常量、数据类型及游标。 - **BEGIN**: 主程序体开始,可以包含任何合法的PL/SQL语句。 - **EXCEPTION**: 异常处理部分,...
以上就是PL/SQL的基础知识,包括块的定义、时间类型、复合类型、变量声明、流程控制等,这些构成了编写PL/SQL程序的基础框架。理解并熟练掌握这些概念对于进行Oracle数据库的开发和管理至关重要。
PL/SQL(Procedure Language for SQL)是Oracle数据库的一种专用编程语言,它结合了SQL命令与过程化脚本,从而允许混合数据库查询与程序逻辑控制结构。存储过程是一种在数据库上创建并保存的过程,它由一系列SQL语句...
执行部分包含SQL语句和PL/SQL控制结构;异常处理部分用于捕获和处理运行时错误。 2. **变量和数据类型**: PL/SQL支持多种内置数据类型,如NUMBER(数值型)、VARCHAR2(可变长度字符串)、DATE(日期时间)、...
Oracle笔记(PL-SQL)是关于数据库管理和编程的一个重要主题,主要聚焦于Oracle数据库系统中的结构化查询语言(SQL)的扩展——PL/SQL。PL/SQL是一种过程化语言,结合了SQL的功能,使得开发者能够编写复杂的数据库应用...
3. **PL/SQL流程控制**:深入探讨如何使用各种流程控制语句,如循环(FOR、WHILE)、分支(IF-THEN-ELSIF、CASE)以及GOTO语句。 4. **PL/SQL子程序**:介绍如何创建和调用过程和函数,包括参数模式、默认值、重载...