1.if判断:

if-then-end if:

SQL> declare
2
3 v_ename emp.ename%type;
4 v_sal emp.sal%type;
5
6 begin
7
8 select ename,sal into v_ename,v_sal from emp where empno=&#
9 dbms_output.put_line('Old salary is: '||v_sal);
10 if v_sal < 8000 then
11 update emp set sal=sal+1000 where empno=&num;
12 commit;
13 end if;
14 select ename,sal into v_ename,v_sal from emp where empno=&num;
15 dbms_output.put_line('New salary is: '||v_sal);
16
17 end;

if-then-else-end if:

SQL> declare
2
3 v_ename emp.ename%type;
4 v_sal emp.sal%type;
5
6 begin
7
8 select ename,sal into v_ename,v_sal from emp where empno=&&num;
9 dbms_output.put_line('Old salary is: '||v_sal);
10 if v_sal < 8000 then
11 update emp set sal=sal+1000 where empno=&num;
12 commit;
13 else
14 update emp set sal=sal+500 where empno=&num;
15 commit;
16 end if;
17 select ename,sal into v_ename,v_sal from emp where empno=&num;
18 dbms_output.put_line('New salary is: '||v_sal);
19
20 end;

if-then-elsif-else-end if:

SQL> declare
2
3 v_ename emp.ename%type;
4 v_sal emp.sal%type;
5 v_job emp.job%type;
6
7 begin
8
9 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&&num;
10 dbms_output.put_line('JOB is: '||v_job||';'||'Old salary is: '||v_sal);
11 if v_job='SALESMAN' then
12 update emp set sal=sal+1000 where empno=&num;
13 commit;
14 elsif v_job='CLERK' then
15 update emp set sal=sal+800 where empno=&num;
16 commit;
17 else
18 update emp set sal=sal+500 where empno=&num;
19 commit;
20 end if;
21 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&num;
22 dbms_output.put_line('JOB is: '||v_job||';'||'New salary is: '||v_sal);
23
24 end;
SQL> declare
2
3 v_ename emp.ename%type;
4 v_sal emp.sal%type;
5 v_job emp.job%type;
6
7 begin
8
9 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&&num;
10 dbms_output.put_line('JOB is: '||v_job||';'||'Old salary is: '||v_sal);
11 if v_job='SALESMAN' then
12 update emp set sal=sal+1000 where empno=&num;
13 commit;
14 elsif v_job='CLERK' then
15 update emp set sal=sal+800 where empno=&num;
16 commit;
17 else
18 update emp set sal=sal+500 where empno=&num;
19 commit;
20 end if;
21 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&num;
22 dbms_output.put_line('JOB is: '||v_job||';'||'New salary is: '||v_sal);
23
24 end;

2.case分支判断:

SQL> declare
2 v_ename emp.ename%type;
3 v_job emp.job%type;
4 v_sal emp.sal%type;
5 v_out varchar2(10);
6
7 begin
8 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&&num;
9 dbms_output.put_line('JOB is: '||v_job||';'||'Old salary is: '||v_sal);
10
11 v_out:=case v_job
12 when 'CLERK' THEN v_SAL+100
13 WHEN 'SALESMAN' THEN v_SAL+200
14 END ;
15 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&num;
16 dbms_output.put_line('JOB is: '||v_job||';'||'New salary is: '||v_OUT);
17 dbms_output.put_line(v_out);
18 end;
SQL> declare
2 v_ename emp.ename%type;
3 v_job emp.job%type;
4 v_sal emp.sal%type;
5 v_out varchar2(10);
6
7 begin
8 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&&num;
9 dbms_output.put_line('JOB is: '||v_job||';'||'Old salary is: '||v_sal);
10
11 v_out:=case v_job
12 when 'CLERK' THEN v_SAL+100
13 WHEN 'SALESMAN' THEN v_SAL+200
14 END ;
15 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&num;
16 dbms_output.put_line('JOB is: '||v_job||';'||'New salary is: '||v_OUT);
17
18 end;
SQL> declare
2 v_ename emp.ename%type;
3 v_job emp.job%type;
4 v_sal emp.sal%type;
5 v_out varchar2(10);
6
7 begin
8 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&&num;
9 dbms_output.put_line('JOB is: '||v_job||';'||'Old salary is: '||v_sal);
10
11 v_out:=case v_job
12 when 'CLERK' THEN v_SAL+100
13 WHEN 'SALESMAN' THEN v_SAL+200
14 END ;
15 select ename,job,sal into v_ename,v_job,v_sal from emp where empno=&num;
16 dbms_output.put_line('JOB is: '||v_job||';'||'New salary is: '||v_OUT);
17
18 end;

在sql中使用case:

SQL>  select ename,job,sal,
2 CASE
3 WHEN JOB='CLERK' THEN SAL+100
4 WHEN JOB='MANAGER' THEN SAL+50
5 WHEN JOB='SALESMAN' THEN SAL+300
6 ELSE
7 SAL
8 END AS ADD_SAL
9 FROM EMP;

decode 语句:

SQL> select ename,sal,JOB,
2 decode (job ,'CLERK',SAL+100,
3 'SALESMAN',SAL+300,
4 'MANAGER',SAL+50,
5 SAL) ADD_SAL
6 FROM EMP;

3.循环语句:

案例:在表中插入数据

①loop基本循环

SQL> declare
2 v_num number :=1;
3 v_count number;
4
5 begin
6
7 loop
8 insert into t1 values (v_num,'tom'||v_num ,'ok');
9 v_num :=v_num + 1;
10
11 exit when v_num >10;
12
13 end loop;
14 commit;
15
16 select count(*) into v_count from t1;
17
18 dbms_output.put_line('T1 rows is :'||v_count);
19
20 end;

②for 循环:

SQL> declare
2 v_count number;
3
4 begin
5
6 for i in 1..10
7 loop
8 insert into t1 values (i,'tom'||i ,'ok');
9 end loop;
10 commit;
11
12 select count(*) into v_count from t1;
13
14 dbms_output.put_line('T1 rows is :'||v_count);
15
16 end;

③while 循环:

SQL> declare
2 v_num number := 1;
3 v_count number ;
4
5 begin
6
7 while v_num <=10 loop
8 insert into t1 values (v_num,'tom'||v_num ,'ok');
9 v_num := v_num + 1;
10 end loop;
11 commit;
12
13 select count(*) into v_count from t1;
14
15 dbms_output.put_line('T1 rows is :'||v_count);
16
17 end;

【PL/SQL练习】控制结构的更多相关文章

  1. 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)

    一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...

  2. pl/sql的控制结构,分支、循环、控制

    一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...

  3. PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务

    1.条件控制 A. IF条件分支语法: if (条件1) then 语句; elsif (条件2) then 语句; elsif (条件3) then 语句; else 语句; end if; B . ...

  4. pl/sql的介绍

    为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...

  5. PL/SQL之基础篇

    参考文献:<Oracle完全学习手册>第11章 1.PL/SQL概述 PL/SQL(Procedure Language/Structuer Query Language)是Oracle对 ...

  6. oracle PL/SQL(procedure language/SQL)程序设计--控制结构(if else )

    IF逻辑结构:IF-THEN-END IFIF-THEN-ELSE-END IFIF-THEN-ELSIF-END IF 语法 IF condition THEN  statements;[ELSIF ...

  7. oracle pl/sql 控制结构(分支,循环,控制)

    一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...

  8. pl/sql进阶一控制结构

    在任何计算机语言(c,java,c#,c++)都有各种控制语句(条件语句,循环结构,顺序控制结构…),在pl/sql中也存在这样的控制结构. 在本部分学校完毕后,希望大家达到: 1)使用各种if语句 ...

  9. PL/SQL控制结构

    顺序结构 按先后顺序 分支判断结构 IF语句 IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statem ...

  10. Oracle pl/sql编程值控制结构

    以下测试案例均来自于scott方案,运行前请确保该方案解锁. 1.条件分支状语 pl/sql中提供了三种条件分支状语,分别是: if   then if   then   else if   then ...

随机推荐

  1. HTML常用标签(自用,可能不严谨,勿怪)

    html标签中‘<’和‘>’默认被占用,如果想要显示出这些符号,就需要使用特殊字符来实现'<':使用&lt实现'>':使用&gt实现空格:html中再多的空格默 ...

  2. 几个关于wcf、rest服务的好帖子

    //http://blog.csdn.net/fangxing80/article/details/6247297  //http://msdn.microsoft.com/zh-cn/magazin ...

  3. activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建

    项目中需要整合activiti-modeler自定义流程,找了很多资料后,终于成功的跳转到activiti-modeler流程设计界面,以下是记录: 一.整合基础:eclipse4.4.1.tomca ...

  4. java连接mongodb的一个奇葩问题及奇葩解决方式

    昨天在eclipse中编写代码,本来连接mongodb进行各项操作都是正常的,但是有一会儿突然之间就没法连接了,还一直抱错,错误如下: 信息: Cluster created with setting ...

  5. windows下boost库的基本使用方法

    因为boost都是使用模板的技术,所以所有代码都是写在一个.hpp头文件中.这样boost中的大部分内容是不需要编译生成相应的链接库,只需要设置下面的包含目录(或者设置一下环境变量),在源文件中包含相 ...

  6. smartgit document merge

    'Normal' Merge In case of a normal merge, a merge commit with at least two parent commits (i.e., the ...

  7. DBA_Oracle Sort排序处理空间耗用(概念)

    2014-12-18 Created By BaoXinjian

  8. Linux删除乱码文件名或者目录名

    有时,rz上传文件失败或者不小心输入命令会产生乱码文件名.因为用rm 删除特殊字符基本无效,故找到了下面两种简单易用的方法: 例子: [langxiaowei@mirror:~]$ ls ??     ...

  9. OAuth2.0_豆瓣登录_API错误返回码说明一览表[转]

    转自: http://blog.unvs.cn/archives/douban-oauth-2.0-error_code.html 在遵循OAuth2.0协议,开始制作豆瓣过程中,经常会遇到以下两个错 ...

  10. js中使用s(c)标签

    在js或者jquery中使用s标签,其实并不难理解,s标签也只是一个标签而已,当你想象成js+s标签=js+html标签就理解了 例如: <script type="text/java ...