一、if条件语句                                           

  1. set serverout on;
  2. declare n number:=1;
  3. v varchar(20):='world';
  4. begin
  5. dbms_output.put_line('hello'||n||v);
  6. end;
  7. /
  8.  
  9. hello1world
  1. declare emp_count number;
  2. begin
  3. select count(*) into emp_count from emp where sal >= 3000;
  4. if(emp_count>0) then
  5. dbms_output.put_line('有'||emp_count||'员工的基本薪资大于等于3000');
  6. else
  7. dbms_output.put_line('没有员工的基本薪资大于等于3000');
  8. end if;
  9. end;

有3个员工的基本薪资大于等于3000

if elseif else if :

  1. SQL> declare emp_count number;
  2. 2 begin
  3. 3 select count(*) into emp_count from emp where sal >= 3000;
  4. 4 if(emp_count=1) then
  5. 5 dbms_output.put_line('有1个员工的基本薪资大于等于3000');
  6. 6 else if(emp_count>1) then
  7. 7 dbms_output.put_line('超过1个员工的基本薪资大于等于3000');
  8. 8 else
  9. 9 dbms_output.put_line('没有员工的基本薪资大于等于3000');
  10. 10 end if;
  11. 11 end if;
  12. 12 end;
  13. 13 /
  14. 超过1个员工的基本薪资大于等于3000
  15.  
  16. PL/SQL 过程已成功完成。

二、case when流程控制语句                                      

  1. SQL> declare emp_count number;
  2. 2 begin
  3. 3 select count(*) into emp_count from emp where sal >= 3000;
  4. 4 case emp_count
  5. 5 when 0 then dbms_output.put_line('没有员工的基本薪资大于等于3000');
  6. 6 when 1 then dbms_output.put_line('有1个员工的基本薪资大于等于3000');
  7. 7 when 2 then dbms_output.put_line('有2个员工的基本薪资大于等于3000');
  8. 8 when 3 then dbms_output.put_line('有3个员工的基本薪资大于等于3000');
  9. 9 else dbms_output.put_line('超过3个员工的基本薪资大于等于3000');
  10. 10 end case;
  11. 11 end;
  12. 12 /
  13. 3个员工的基本薪资大于等于3000
  14.  
  15. PL/SQL 过程已成功完成。

三、循环语句                                                

1.无条件循环 loop:

salgrade表:

现在循环grade从2到4,打印出最低薪资,和最高薪资:

  1. SQL> declare g_id number:=2;
  2. 2 g_losal number;
  3. 3 g_hisal number;
  4. 4 begin
  5. 5 loop
  6. 6 if(g_id>4) then
  7. 7 exit;
  8. 8 end if;
  9. 9
  10. 10 select losal,hisal into g_losal, g_hisal from salgrade where grade = g_id;
  11. 11 dbms_output.put_line(g_id||'等级的最低薪资'||g_losal||',最高薪资'||g_hisal);
  12. 12
  13. 13 g_id := g_id + 1;
  14. 14 end loop;
  15. 15 end;
  16. 16 /
  17. 2等级的最低薪资1201,最高薪资1400
  18. 3等级的最低薪资1401,最高薪资2000
  19. 4等级的最低薪资2001,最高薪资3000
  20.  
  21. PL/SQL 过程已成功完成。

2.while循环:

  1. SQL> declare g_id number:=2;
  2. 2 g_losal number;
  3. 3 g_hisal number;
  4. 4 begin
  5. 5 while(g_id<5) loop
  6. 6 select losal,hisal into g_losal, g_hisal from salgrade where grade = g_id;
  7. 7 dbms_output.put_line(g_id||'等级的最低薪资'||g_losal||',最高薪资'||g_hisal);
  8. 8
  9. 9 g_id := g_id + 1;
  10. 10 end loop;
  11. 11 end;
  12. 12 /
  13. 2等级的最低薪资1201,最高薪资1400
  14. 3等级的最低薪资1401,最高薪资2000
  15. 4等级的最低薪资2001,最高薪资3000
  16.  
  17. PL/SQL 过程已成功完成。

3、for循环:

  1. SQL> declare g_losal number;
  2. 2 g_hisal number;
  3. 3 begin
  4. 4 for g_id in 2..4 loop
  5. 5 select losal,hisal into g_losal, g_hisal from salgrade where grade = g_id;
  6. 6 dbms_output.put_line(g_id||'等级的最低薪资'||g_losal||',最高薪资'||g_hisal);
  7. 7 end loop;
  8. 8 end;
  9. 9 /
  10. 2等级的最低薪资1201,最高薪资1400
  11. 3等级的最低薪资1401,最高薪资2000
  12. 4等级的最低薪资2001,最高薪资3000
  13.  
  14. PL/SQL 过程已成功完成。

Oracle学习操作(3)的更多相关文章

  1. oracle学习操作(1)

    一.oracle表及表空间: 1.查看用户.用户表空间等,需要sysdba登陆: select username, default_tablespace from dba_users;   2.一个数 ...

  2. Oracle学习操作(7)用户、权限、角色

    一.oracle用户: 二.权限 1.系统权限: sys登陆创建c##test用户后,给用户c##test授权,并且带有传播性: SQL> create user c##test identif ...

  3. Oracle学习操作(6)函数与存储过程

    一.oracle自定义函数 1.不带参数的函数: 返回t_book表的总条数: SQL> create function getBookCount return number as begin ...

  4. Oracle学习操作(5)触发器

    Oracle触发器 一.触发器简介 具备某些条件,由数据库自动执行的一些DML操作行为: 二.语句触发器 现在数据库创建t_book表:t_booktype表:t_book表的typeid存在外键参考 ...

  5. Oracle OCI操作UDT相关学习(二)

    沿用 Oracle OCI操作UDT相关学习 一文中定义的类型和表. 1.更改数据 在sqldeveloper 中更新数据, update dxl.cust set addr.street='a11' ...

  6. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  7. Oracle学习指南

    Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...

  8. Oracle学习系列1-7

    Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...

  9. Oracle学习系列7

    Oracle学习系列7 ************************************************************************************ 关联表 ...

随机推荐

  1. bzoj1087

    题解: 状压dp 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; int n,m,cnt[ ...

  2. web项目中的路径问题

    “/”表示根路径 1.“/”代表的意思不是固定的,是要根据具体的方法,才能知道在该方法中"/"所代表的含义,同样相对路径也不是固定的,需要根据具体的方法来判断具体是相对哪个路径的相 ...

  3. python安装大型包时出现错误Unable to find vcvarsall.bat

    在windows平台上,据说是安装cpython编写的包时会出现Unable to find vcvarsall.bat这种错误,缺失编译C的环境或组件吧,所以这个包就安装不成功,这个时候简单的方法就 ...

  4. eclipse中使用Maven新建Servlet2.5的Web项目

    前言 我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的 ...

  5. Beta 冲刺(7/7)

    前言 队名:拖鞋旅游队 组长博客:https://www.cnblogs.com/Sulumer/p/10129067.html 作业博客:https://edu.cnblogs.com/campus ...

  6. 转:ios导航栏设置

    原帖:http://www.cocoachina.com/industry/20131104/7287.html 本文提供的代码需要用Xcode 5来执行.如果你还在使用老版本的Xcode,那么在运行 ...

  7. ubuntu16 intellij idea install lombok plugin

    项目中用到lombok,idea会出现类似编译报错的红色,但并不影响运行.所以为了没有类似警告,就在idea上安装lombok插件.file-settings 安装完成之后,按照提示重启idea,问题 ...

  8. C高级第一次PTA作业

    作业要求一 附加题目 写程序证明P++等价于(p)++还是等价于*(p++)? 1.设计思路: (1).题目算法描述 第一步:定义变量p并赋初值 第二步:分三次计算每次分别输出 p++,(p)++,* ...

  9. calculate MAC,Lisence,Checksum and generate muti-file

    /************************************************************************* * calculate MAC,Lisence,C ...

  10. SUST OJ 1674: 入侵与反击(最长不下降子序列)

    1674: 入侵与反击 时间限制: 1 Sec  内存限制: 128 MB提交: 229  解决: 28[提交][状态][讨论版] 题目描述 A国部署的反导系统遇到了一个致命BUG,那就是每一次发射的 ...