前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle pl/sql编程值控制结构

Oracle pl/sql编程值控制结构

作者头像
郑小超.
发布2018-01-26 10:58:29
6290
发布2018-01-26 10:58:29
举报
文章被收录于专栏:GreenLeavesGreenLeaves

以下测试案例均来自于scott方案,运行前请确保该方案解锁。

1、条件分支状语

pl/sql中提供了三种条件分支状语,分别是:

if   then

if   then   else

if   then   else   if   then

1.1、if    then

编写一个过程.可以输出一个雇员名,如果该雇员的工资低于2000,就给该雇员的工资增加10%,

执行代码前,SMITH的SAL为800.代码如下:

代码语言:javascript
复制
create or replace procedure sp_pro6(spName varchar2) is
v_sal emp.sal%type;
begin
  select sal into v_sal from emp where ename=spName;
  if v_sal<2000 then
    update emp set sal=sal*1.1 where ename=spName;
    end if;
    end;
    
    select * from emp;
代码语言:javascript
复制
call sp_pro6('SMITH');

执行sp_pro6过程.

ok,Smith的工资增加了80,说明成功执行

1.2、if   then   else

编写一个过程,可以输入一个雇员名,如果该雇员的补助不是0,就在原来的基础上加100,如果补助为0就把补助设为200

执行前,SMITH的补助为0,代码如下:

代码语言:javascript
复制
create or replace procedure sp_pro7(spName varchar2) is
v_comm emp.sal%type;
begin
  select comm into v_comm from emp where ename=spName;
  if v_comm<>0 then
    update emp set comm=v_comm+100 where ename=spName;
    else 
      update emp set comm=200 where ename=spName;
    end if;
    end;

执行过程

代码语言:javascript
复制
 call sp_pro7('SMITH');

ok,因为SMITH的补助为0所以直接变为200,说明代码执行成功

1.3、多重条件分支if   then   else if   else

编写一个过程,输入一个雇员的编号,如果该雇员的职位是PRESIDENT就给他的工资增加1000,如果该雇员的职位是MANAGER,就给他的工资增加500,其他雇员的工资增加200.

SMITH是CLERK,那么按照逻辑其SAL会增加200

代码语言:javascript
复制
create or replace procedure sp_pro8(spName varchar2) is
v_job emp.job%type;
begin
  select job into v_job from emp where ename=spName;
  if v_job='PRESIDENT' then
    update emp set sal=sal+1000 where ename=spName;
  elsif v_job='MANAGER'  then
      update emp set sal=sal+500 where ename=spName;
      else
        update emp set sal=sal+200 where ename=spName;
    end if;
    end;

 执行过程

代码语言:javascript
复制
call sp_pro8('SMITH');

增加了200,ok,说明程序执行成功!!!

2、循环语句  -loop

是pl/sql中最简单的循环语句,这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次。

2.1、编写一个过程,输入用户名,并循环添加10个用户到users表中,用户编号从1开始增加,代码如下:

代码语言:javascript
复制
create table users(id number(2),name varchar2(10));
create or replace procedure sp_pro5(spName varchar2) is
v_num number:=1;
begin
  loop
    insert into users values(v_num,spName);
    exit when v_num=10;
    v_num:=v_num+1;
  end loop;
end;

ok,代码编写完成,开始执行,代码如下:

代码语言:javascript
复制
call sp_pro5('xiaochao');

ok,完成需求

2.2、while循环

基本循环至少执行一次,而对while循环来说,只有条件为true时,才会执行循环体语句,while循环以while.....loop开始,以end loop结束;

需求:编写一个过程,输入用户名,并循环添加10个用户到users表中,用户编号从11开始,代码如下:

代码语言:javascript
复制
create or replace procedure sp_pro4(spName varchar2) is
v_num number:=11;
begin
  while v_num<=20
  loop
    insert into users values(v_num,spName);
    v_num:=v_num+1;
  end loop;
end;

ok,程序执行成功!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-04-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档