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. Install Apache, PHP And MySQL On CentOS 7 (LAMP)

    This tutorial shows how you can install an Apache2 webserver on a CentOS 7.0 server with PHP5 suppor ...

  2. routeros的配置资料

    http://blog.csdn.net/boliang319/article/details/41800261 http://blog.csdn.net/boliang319/article/det ...

  3. [Perl] Getopt 函数来接收用户参数的使用

    我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参 ...

  4. 共享内存是最快的一种IPC方式

    在linux进程间通信的方式中,共享内存是一种最快的IPC方式.因此,共享内存用于实现进程间大量的数据传输,共享内存的话,会在内存中单独开辟一段内存空间,这段内存空间有自己特有的数据结构,包括访问权限 ...

  5. css3旋转小三角

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 配置文件——WebApp.config文件读取和修改

    using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using ...

  7. VS2013 越来越慢

    Q.VS2013 原来启动只要大概 一两秒的时间,现在启动最少也得十秒以上.而且打开项目也变得很慢了!求解决方案. 清理一下缓存就好了.devenv.exe /resetuserdata 第二:装了v ...

  8. LinkedHashMap的实现原理(复习)

    1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映 ...

  9. eclipse中输入@符号自动提示Annotation

    将Eclipse中Content Assist中的Auto activation for java里.的后面加上@符号即可

  10. Java同步块

    原文:http://ifeve.com/synchronized-blocks/ Java 同步块(synchronized block)用来标记方法或者代码块是同步的.Java同步块用来避免竞争.本 ...