`
slbszq
  • 浏览: 267803 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

pl/sql编程中的控制结构

阅读更多

pl/sql编程中的控制结构

 () 条件分支语句

pl/sql中提供了三种条件分支语句if - thenif then elseif then elsif then

1) 简单的条件判断 if then - end if;

-- 输入一个人名,如果工资低于2000,就给员工工资增加10%。
create or replace procedure add_sal(name varchar2) is
  v_sal emp.sal%type;
begin
  select sal into v_sal from emp where ename = name;
  if v_sal < 2000 then
    update emp set sal = sal + sal*0.1 where ename = name;
  end if;
end;

  

2) 二重条件分支 if then else - end if;

-- 输入员工姓名,有补助则加100,没有则设为200;
create or replace procedure add_comm(name varchar2) is
  v_comm emp.comm%type;
begin
  select nvl(comm, 0) into v_comm from emp where ename = name;
  if v_comm <> 0 then
    update emp set comm = comm + 100 where ename = name;
  else
    update emp set comm = 200 where ename = name;
  end if;
end;

  

3) 多重条件分支 if then elsif then - else - end if;

注意:elsif, 不是elseif,也不是else if

-- 输入员工编号,如果是PRESIDENT工资加1000,MANAGER加500,其他加200
create or replace procedure addSalByEmpno(eno number) is
  v_job emp.job%type;
  v_val emp.sal%type;
begin
  select job into v_job from emp where empno = eno;
  if (v_job = 'PRESIDENT') then  -- 条件语句可以不使用()
    v_val := 1000;               -- pl/sal中的赋值 :=
  elsif v_job = 'MANAGER' then   -- 切记: 是 elsif 而不是 elseif 也不是 else if
    v_val := 500;
  else
    v_val := 200;
  end if;
  update emp set sal = sal + v_val where empno = eno;
end;

  

() 循环语句

1) 循环语句loop

这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次。

-- 现有users表如下:
create table users(id number(4), name varchar2(20));
-- 输入用户名,并循环添加10个用户到users表中, 用户编号从1开始增加。
create or replace procedure add_users(name varchar2) is
  v_num number(4) := 1;
begin
  loop
    insert into users values(v_num, name);
    exit when v_num = 10;
    v_num := v_num + 1;
  end loop;
end;

  

2) 循环语句while循环

基本循环至少要执行循环体一次,而对于while循环来说,只有条件为true时,才会执行循环体语句,while循环以while...loop

 

开始,以end loop结束。

-- 用while 循环重写add_users方法。
create or replace procedure add_users2(name varchar2) is
  v_num number(4) := 11;
begin
  while v_num <= 20 loop
    insert into users values(v_num, name);
    v_num := v_num + 1;
  end loop;
end;

  

3) 循环语句for循环

-- 用for 循环重写add_users方法
create or replace procedure add_users3(name varchar2) is
  v_i number(4);
begin
  for v_i in reverse 1..10 loop  -- reverse可选的,倒序(10.9.8..) 如果不写为(1.2.3..)
    insert into users values(v_i, name);
  end loop;
end;

  

() 顺序控制语句gotonull

1) goto语句

goto语句用于跳转到特定符号去执行语句。goto语句会增加程序的复杂性,并使得应用程序可读性变差,所有不建议使用。用法goto lable; <<label>>

-- goto语句
set serveroutput on;
declare
  i int := 1;
begin
  loop
    dbms_output.put_line('输出 i = ' || i);
    if i = 5 then
      goto end_loop;
    end if;
    i := i + 1;
  end loop;
  <<end_loop>>
  dbms_output.put_line('循环结束');
end;

  

2) null语句

null语句不会执行任何操作,并且会直接将控制传递到下一条语句。使用null语句的主要好处是可以提高pl/sql的可读性

-- null语句
declare
  v_sal emp.sal%type;
  v_ename emp.ename%type;
begin
  select ename, sal into v_ename, v_sal from emp where empno = &no;
  if v_sal < 3000 then
    update emp set sal = sal + sal * 0.1 where ename = v_ename;
  else
    null; -- 什么也不做,为了提高可读性。
  end if;
end;

 

分享到:
评论

相关推荐

    PL/SQL编程基础知识

    ### PL/SQL编程基础知识 #### 一、PL/SQL简介 PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库...

    pl/sql最新中文手册

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种过程化语言,专为数据库操作设计。这个"PL/SQL最新中文手册"显然是一份详细解释PL/SQL 7.0版本的指南,对于学习和精通Oracle数据库编程至关重要。以下是手册...

    14oracle的PL/SQL编程-控制结构 PPT

    Oracle的PL/SQL编程语言是数据库管理中不可或缺的一部分,它扩展了SQL的功能,允许开发者编写复杂的业务逻辑和处理流程。在PL/SQL中,控制结构是实现程序流程控制的关键元素,它们决定了代码的执行顺序和条件。以下...

    一个对数据库的操作工具PL/SQLpl/sqL工具

    1. **编程能力**:PL/SQL允许编写包含控制结构(如循环、条件语句)和异常处理的程序块,这些块可以存储在数据库中并按需调用,提高了数据库应用的灵活性和复杂性。 2. **数据处理**:通过PL/SQL,用户可以直接对...

    PL/SQL基础编程,实例自写

    它结合了SQL的数据处理能力和传统编程语言的控制结构,使开发者能够在数据库环境中编写复杂的应用程序。PL/SQL直接在数据库服务器内部执行,这使得数据处理速度更快,同时也降低了网络通信的开销。 #### 二、PL/SQL...

    Oracle PL/SQL编程及最佳实践

    条件分支语句是 PL/SQL 中的一种控制结构,用于根据条件执行不同的语句。条件分支语句可以是简单的,也可以是复杂的,例如使用 IF 语句、CASE 语句等。 十八、循环语句 循环语句是 PL/SQL 中的一种控制结构,用于...

    oracle10g_pl/sql

    Oracle 10g PL/SQL 是Oracle数据库系统中用于创建和管理存储过程、函数、触发器等数据库对象的编程语言。本教程旨在为初学者提供一个全面的学习平台,同时也为经验丰富的开发者提供参考资料。PL/SQL是Oracle特有的...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    3. **控制结构**:PL/PROCEDURE和PL/FUNCTION是PL/SQL的基本程序单元,前者不返回值,后者可以返回一个值。流程控制结构有IF-THEN-ELSIF-ELSE、CASE、FOR循环、WHILE循环和GOTO。 4. **SQL操作**:PL/SQL可以直接...

    oracle实验三PL/SQL编程

    Oracle PL/SQL编程是Oracle数据库管理系统中的重要组成部分,它是一种过程化语言,允许开发者编写复杂的数据库应用程序。在本次实验中,我们将重点学习PL/SQL的基本语法、控制结构、复合数据类型以及异常处理技术。 ...

    Oracle PL/SQL实战(待续)

    在Oracle数据库中,PL/SQL提供了丰富的控制结构,如循环、条件判断,以及异常处理机制,使得开发者能够编写复杂的业务逻辑。例如,`IF...THEN...ELSIF...ELSE`语句用于实现条件分支,`WHILE`和`FOR`循环则可以处理...

    精通pl/sql

    《精通PL/SQL》这本书是针对Oracle数据库系统中PL/SQL编程语言的深度解析与实践指南,主要面向希望提升在Oracle环境下使用PL/SQL技能的专业人士。PL/SQL,全称为Procedural Language/Structured Query Language,是...

    pl/sql developer11.0

    PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库系统中用于数据库编程的一种扩展SQL语言。它结合了SQL的查询能力与过程化编程元素,使得开发者能够创建复杂的业务逻辑和数据库应用程序。PL/...

    精通oracle 10g pl/sql编程

    在Oracle 10g中使用PL/SQL编程,可以实现很多高级功能,例如,通过编写复杂的存储过程,可以实现批量数据处理、自定义事务控制、复杂的数据验证和清洗,以及高级的业务逻辑处理等。此外,PL/SQL还提供了丰富的内置...

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    pl/sql64位

    PL/SQL是Oracle数据库系统中的一个关键组件,全称为Procedural Language/Structured Query Language,是一种结合了SQL和过程编程语言的工具,主要用于编写数据库应用程序。64位的PL/SQL开发者工具对于那些处理大数据...

    oracle pl/sql 编程

    这几章将深入探讨PL/SQL中的流程控制结构,如IF语句、CASE语句、LOOP循环等,并介绍如何使用PL/SQL进行错误处理和调试。此外,还包括对PL/SQL包的介绍,讲解如何封装和重用代码,提高开发效率。 #### 第6章至第9章...

    oracle 9i pl/sql程序设计笔记

    通过上述对Oracle 9i PL/SQL程序设计笔记的总结,我们可以看到PL/SQL作为一种强大的数据库编程语言,提供了丰富的功能来支持数据处理、事务控制及业务逻辑的实现。掌握PL/SQL的不同块类型及其使用方法对于开发高效、...

    Oracle PL/SQL编程详解

    PL/SQL流程控制语句部分讲解了如何在PL/SQL代码中使用流程控制结构来控制程序的执行流程。这包括条件语句(IF-THEN-ELSE、CASE)、循环语句(LOOP、WHILE、FOR)。这些控制结构使得开发者能够编写出能够根据不同的...

    Oracle_PL/SQL编程

    总的来说,Oracle PL/SQL编程提供了一种强大的工具,用于构建复杂的数据库应用,结合了SQL的查询功能和编程语言的控制结构,使得数据库操作更为灵活和高效。通过熟练掌握PL/SQL,开发者可以编写出高效、健壮且易于...

Global site tag (gtag.js) - Google Analytics