`

精通Oracle10编程SQL(7)编写控制结构

阅读更多
/*
 *编写控制结构
 */
 
--条件分支语句
--简单条件判断
DECLARE
  v_sal NUMBER(6,2);
BEGIN
  select sal into v_sal from emp
  where lower(ename)=lower('&name');
  if v_sal<2000 then
     update emp set sal=v_sal+200
     where lower(ename)=lower('&name');
  end if;
end;

select * from emp;

--二重条件分支
--如果雇员补助不是0,则在原来的基础上增加100元,如果补助为0或NULL时,则设置其补助为200元
DECLARE
  v_comm NUMBER(6,2);
BEGIN
  select comm into v_comm from emp where empno=&no;
  if v_comm <> 0 then
     update emp set comm=v_comm+100 where empno=&no;
  else
     update emp set comm=200 where empno=&no;
  end if;
end;

--多重条件分支
DECLARE
  v_job VARCHAR2(10);
  v_sal NUMBER(6,2);
BEGIN
  SELECT JOB,SAL INTO v_job,v_sal from emp where empno=&no;
  if upper(v_job)=upper('president') then
     update emp set sal=v_sal+1000 where empno=&no;
  elsif upper(v_job)=upper('manager') then
     update emp set sal=v_sal+500 where empno=&no;
  else
     update emp set sal=v_sal+200 where empno=&no;
  end if;
END;

select * from emp;

--CASE语句
--在CASE语句中使用单一选择符进行等值比较
DECLARE
   v_deptno emp.deptno%TYPE;
begin
   v_deptno:=&no;
   case v_deptno
      when 1 then
         update emp set comm=100 where deptno=v_deptno;
      when 2 then
         update emp set comm=80 where deptno=v_deptno;
      when 3 then
         update emp set comm=50 where deptno=v_deptno;
      else
         dbms_output.put_line('不存在该部门');
   end case;
end;

select * from emp;

--在CASE语句中使用多种条件比较
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;
  case 
    when v_sal<1000 then
      update emp set comm=100 where ename=v_ename;
    when v_sal<2000 then 
      update emp set comm=90 where ename=v_ename;
    when v_sal<6000 then
      update emp set comm=50 where ename=v_ename;
  end case;
end;

select * from emp;

--循环语句
--基本循环
create table temp(cola int);

DECLARE
  i INT:=1;
begin
  LOOP
    insert into temp values(i);
    exit when i=10;
    i:=i+1;
  end loop;
end;

select * from temp;

--WHILE循环
DECLARE
  i INT:=1;
begin
  while i<=10 loop
    insert into temp values(i);
    i:=i+1;
  end loop;
end;

--FOR循环
begin
  for i in reverse 1..10 LOOP
    insert into temp values(i);
  end loop;
end;

--嵌套循环和标号
DECLARE
  result int;
BEGIN
  <<outer>>
  for i in 1..100 loop
     <<inter>>
     for j in 1..100 loop
       result:=i*j;
       exit outer when result=1000;
       exit when result=500;
     end loop inner;
     dbms_output.put_line(result);
  end loop outer;
  dbms_output.put_line(result);
end;

--顺序控制语句
--GOTO
DECLARE
  i INT:=1;
begin
  LOOP
     INSERT INTO temp values(i);
     if i=10 then
       goto end_loop;
     end if;
     i:=i+1;
  end loop;
  <<end_loop>>
  dbms_output.put_line('循环结束');
END;

--NULL
--NULL语句不会执行任何操作,并且会直接将控制传递到下一条语句
--使用NULL语句的主要好处是可以提高PL/SQL程序的可读性
--如果雇员工资低于300,则将其补助设置为工资的10%,如果雇员工资高于3000,则不会执行任何操作(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<300 then
     update emp set comm=sal*0.1 where ename=v_ename;
  else
     null;
  end if;
end;

select * from emp;

 

分享到:
评论

相关推荐

    精通Oracle 10g SQL和PL SQL.zip

    PL/SQL(Procedural Language/SQL)是Oracle数据库特有的编程语言,结合了SQL的查询功能和过程性编程语言的控制结构。通过PL/SQL,开发者可以编写存储过程、函数、触发器等,实现更复杂的业务逻辑。学习PL/SQL主要...

    精通Oracle PLSQL编程

    PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库提供的一个过程化语言,它结合了SQL的查询功能和传统的过程式编程语言的控制结构,使得数据库管理和应用程序开发更加高效和灵活。...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(一)

     第13章 编写控制结构  第14章 使用复合数据类型  第15章 使用游标  第16章 异常处理 . 第17章 本地动态sql  第18章 pl/sql过程  第19章 pl/sql函数  第20章 pl/sql包  第21章 触发器  第22章 使用对象...

    《精通Oracle PL/SQL》源码

    《精通Oracle PL/SQL》这本书深入探讨了这个语言的各个方面,旨在帮助读者掌握其精髓并提升在数据库开发中的效率。书中提供的源码示例是学习和理解PL/SQL语法、功能以及最佳实践的重要资源。 在"2174_...

    精通Oracle10g SQL/PL编程.PDF

    《精通Oracle10g SQL/PL编程》是一本专为数据库开发者和管理员设计的专业书籍,旨在深入探讨Oracle10g数据库管理系统中的SQL和PL/SQL编程技术。这本书以通俗易懂的方式,为初学者提供了全面的学习路径,同时也为有...

    精通Oracle10编程

    《精通Oracle10编程》是一本深入探讨Oracle数据库10g版本编程的参考资料,适合对数据库有基础了解并希望进一步提升Oracle技术的读者。Oracle作为全球广泛使用的大型关系型数据库管理系统,其10g版本在功能和性能上都...

    精通OracleSQL第2版.zip

    《精通Oracle SQL(第2版)》是一本深入解析Oracle数据库查询语言的专业书籍,由Oracle ACE和OakTable团队的专家共同撰写,集成了他们的丰富经验和专业知识。这本书旨在帮助读者掌握Oracle SQL的高级技巧,提升在...

    精通Oracle10g PLSQL编程.rar

    通过"精通Oracle10g PLSQL编程"的学习,你将能够熟练地使用PLSQL进行数据库交互,编写高效、稳定的数据库应用,为企业的数据管理与业务发展提供强有力的支持。无论你是初学者还是有一定经验的DBA,这份资料都将帮助...

    精通Oracle10g PL_SQL编

    本教程《精通Oracle10g PL_SQL编程》旨在帮助学习者深入理解并熟练掌握Oracle 10g中的PL/SQL编程技术。 1. PL/SQL基础 - PL/SQL的结构:包括声明部分、执行部分和异常处理部分。 - 变量和常量:定义、声明及使用...

    精通ORACLE 10G SQL和PL_SQL

    学习“精通ORACLE 10G SQL和PL_SQL”不仅需要理解基本语法,还需要掌握优化技巧、并发控制、安全性策略以及数据库性能监控等方面的知识。这将有助于你成为一位全面的Oracle数据库管理员或开发者,能够高效地管理和...

    精通Oracle 10g PL/SQL编程

    《精通Oracle 10g PL/SQL编程》是一本针对Oracle数据库系统中PL/SQL编程语言的深度解析书籍。Oracle 10g是Oracle数据库的一个重要版本,它提供了丰富的功能和改进,使得PL/SQL这一数据库编程语言在性能、可维护性和...

    精通oracle 10g plsql 编程-学习笔记

    ### 精通Oracle 10g PL/SQL编程学习笔记 #### 一、PL/SQL综述 **1.1 PL/SQL的功能与作用** PL/SQL (Procedural Language for SQL) 是一种专门为Oracle数据库设计的过程化语言,它结合了SQL的数据处理能力与过程化...

    精通Oracle 10g PL SQL编程

    本文旨在深入解析“精通Oracle 10g PL/SQL编程”这一主题,不仅涵盖基础概念,还将探讨其高级应用,为读者提供一个全面的学习框架。 ### Oracle 10g概述 Oracle 10g(Generation 10)是Oracle公司推出的一款企业级...

    Oracle 11g SQL和PL SQL从入门到精通 pdf格式电子书 下载(二)

     第13章 编写控制结构  第14章 使用复合数据类型  第15章 使用游标  第16章 异常处理 . 第17章 本地动态sql  第18章 pl/sql过程  第19章 pl/sql函数  第20章 pl/sql包  第21章 触发器  第22章 使用对象...

    精通Oracle 10g PLSQL编程

    PL/SQL,全称为Procedural Language/Structured Query Language,是Oracle数据库系统中的过程化语言,它结合了SQL的查询功能和传统编程语言的控制结构,使得在数据库管理与应用开发中更加高效和灵活。 在Oracle 10g...

    精通oracle.10g.pl.sql编程.pdf

    根据提供的文件标题、描述、标签以及部分内容,我们可以推断出这份文档主要关注的是Oracle 10g中的PL/SQL编程技术。以下是对该主题的一些重要知识点的总结与扩展。 ### Oracle 10g简介 Oracle 10g是Oracle公司发布...

Global site tag (gtag.js) - Google Analytics