`

PLSQL中的流程控制和循环语句

 
阅读更多

流程控制

条件分支语句用于依据特定情况选择要执行的操作,PL/SQL提供了三种条件分支语句:if-then,if-then-else,if-then-else –then-else end if;

A:简单条件判断:

简单条件判断用于执行单一条件判断,如果满足特定条件,则会执行相应操作:如果不满足条件则会退出下面我们用scott登陆用emp表举列子如下;

--简单的条件判断 if then

--问题:编写一个过程,可以输入一个雇员名,

 

--如果该雇员的工资低于2000,就给该员工工资增加10%

Create or replace procedure por_1(v_ename varchar2) is
V_sal emp.sal%type;
Begin
Select sal into v_sal form emp where ename=v_ename;
If v_sal<2000
V_sal:=v_sal*0.1;
Update emp set sal=v_sal where ename=_name;
End if;
End;

 如上所示,我们在调用这个过程的时候会这样 exec pro_(‘king’);执行之后king的工资就会在原来的基础上乘以0.1

B:二重条件分支

二重条件分支是指根据条件来选择两种可能性,

--问题:编写一个过程,可以输入一个雇员名,

--如果该雇员的补助不是0就在原来的基础上增加100

--如果补助为0就把补助设为200

create or replace procedure pro_2(v_ename varchar2) is
  v_comm emp.comm%type;
begin
  select nvl(comm,0) into v_comm from emp where ename=v_ename;
  dbms_output.put_line('comm:'||v_comm);
  
  if v_comm<>0 then
    v_comm:=v_comm+100;
  else
    v_comm:=200;
  end if;
  update emp set comm=v_comm where ename=v_ename; 
end;

 C:多重条件分支

多重条件分支用于执行最复杂的条件分支操作

--问题:编写一个过程,可以输入一个雇员编号,

--如果该雇员的职位是PRESIDENT就给他的工资增加1000

--如果该雇员的职位是MANAGER就给他的工资增加500

--其它职位的雇员工资增加200

Create or replace procedure pro_3(v_no number) is
v_sal emp.sal%type;
v_job emp.job%type;
Begin
Select job,sal into v_job,v_sal from emp where empno=v_no;
If  v_job=’ PRESIDENT’  then 
v_sal:=v_sal+1000;
Else if v_job=’MANAGER’ then
v_SAL=v_sal+500;
else
v_sal=v_sal+200;
end if;
end fi
update emp set sal=v_sal where empno=v_empno;
end;

 D:case 条件控制

Case语句可以说是多重条件语句的超级版,用于判断多条件时,比IF 的多重条件语句要好用点

--问题:编写一个过程,可以输入一个雇员编号,

--如果该雇员的职位是PRESIDENT就给他的工资增加1000

--如果该雇员的职位是MANAGER就给他的工资增加500

--CLERK  300--ANALYST 增加200--SALESMAN 100

create or replace procedure pro_11(v_empno number) is
v_job emp.job%type;
v_sal emp.sal%type; 
begin
   select job,sal into v_job,v_sal from emp where empno=v_empno;
   case v_job
     when 'PRESIDENT' then
       v_sal:=v_sal+1000;  
     when 'MANAGER' then
       v_sal:=v_sal+500;
     when 'CLERK' then
       v_sal:=v_sal+300;
     when 'ANALYST' then
       v_sal:=v_sal+200;
     when 'SALESMAN' then
       v_sal:=v_sal+100;
     else
       null;
   end case;  
 --更新数据
  update emp set sal=v_sal where empno=v_empno;
end;

 循环

为了在编写pl/sql快中重复执行一条语句或者一组语句,可以使用循环控制结构。循环结构有基本循环,while循环,fro循环,下面我们来简单的结束使用这三种循环语句的用法。

A:基本循环

pl/sql中最简单格式的循环语句是基本循环语句格式如下:

Loop

…..执行代码

Exit when…..

End   loop;

Declare

I int :=1;

Begin

Loop 
Insert into table_1 valuse(1);
Exit when I:=10;
I:=i+1;
End loop;
End;

 B:while 循环:

对于whil循环来说只有当条件为true时,才会执行循环列子如下:

Declare
I int :=1;
Begin 
While i<10 loop
Insert into table _1 loop;
I :=i+1;
End  loop;
End;

 C:FOR 循环

FRO循环可以在某一个范围内遍历循环,当使用FOR循环时,Oracle会隐含定义循环变量举例:

Begin
For I in reverse 1…..10 loop
Insert into table values(1);
End loop;
End;

 如上所示,当执行pl/sql快时,会为teble表插入10条记录,因为指定了Reverse选项,所以插入数据的顺序为10,9.8….1,

 

0
0
分享到:
评论
1 楼 Y_1746119035 2014-10-24  
一看这例子就知道是和我一个班的~ (*+﹏+*)~

相关推荐

    PLSQL程序优化和性能分析方法

    2. PLSQL程序优化原则 6 2.1 导致性能问题的内在原因 6 2.2 PLSQL优化的核心思想 6 2.3 ORACLE优化器 6 2.4 PLSQL优化 7 2.4.1 选择最有效率的表名顺序 7 2.4.2 WHERE子句中的连接顺序 8 2.4.3 SELECT子句中避免使用...

    PLsql语法.md

    - 是专用于Oracle服务器,在SQL基础之上,**添加了一些过程化控制语句,叫PLSQL** - 过程化包括有:类型定义,判断,循环,游标,异常或例外处理。。。 - **PLSQL强调过程** ![PLsql图片描述]...

    PLSQL 64位系统11/12版本

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。 ...

    plsql 常用快捷键整理

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。 ...

    PLSQLDeveloper下载

     PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。 1) 条件结构 与其它语言完全类似,语法结构如下: if condition then statement1 else statement2 end if ; 2) 循环结构 这一结构与其他语言不太...

    plsql语言编程

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

    PLSQL Developer11(32位+64位)带密钥

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

    plsqldev711免安装版

    PL/SQL Developer是一个集成开发环境,专门开发...在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。

    PLSQL数据库连接工具

    PL/SQL Developer是一个集成开发环境,专门开发面向...在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算

    PLSQL安装包

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

    plsqldev1103.zip

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。

    plsql连接数据库工具

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

    PLSQL Developer.zip

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。

    oracle执行update语句时卡住问题分析及解决办法

    开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。 原因和解决方法 这种...

    plsql12.0.7完全汉化

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

    PLSQL资源包(解压即用,无需安装)

    PL/SQL Developer是一个集成开发环境,专门开发...在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。

    plsql数据库可视化终端

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

    PLSQLDeveloper_解压版

    编辑器具有语法加强、SQL 和PL/SQL 帮助、对象描述、代码助手、编辑器提示、重新构建、PL/SQL完善、代码内容、代码层次、代码层叠、超链接导航、 宏程序库和其他先进的功能, Unicode 兼容编辑器可以满足用户最苛刻的...

    plsqldev1207x64

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

Global site tag (gtag.js) - Google Analytics