pl/sql的控制结构
if-then if-then-else if-then-elsif-else

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

create or replace procedure mypro(spName varchar2) is
v_sal emp.sal%type
begin
select sal into v_sal from emp where ename = spName
if v_sal < then
update emp set sal = sal*1.1 where ename = spName
end if;
end;

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

create or replace procedure mypro(spName varchar2) is
v_comm emp.comm%type
begin
select comm into v_comm from emp where ename = spName;
if v_comm <> then
update emp set comm = comm+ where ename = spName;
else
update emp set comm = comm+ where ename = spName;
end if;
end;

案例3:编写一个过程,可以输入一个雇员编号人,如果该雇员的职位是president就给他的工资增加1000,如果该雇员
的职位是manager就给他的工资增加500,其他职位的雇员工资增加200.

create or replace procedure mypro(spName number) is
v_job emp.job%type
begin
select job into v_job from emp where empno=spNo;
if v_job='PRESIDENT' then
update emp set sal = sal + where empno = spNo;
elsif v_job = 'MANAGER' then
update emp set sal = sal + where empno = spNo;
else
update emp set sal = sal + where empno = spNo;
end if;
end;

pl/sql循环语句

loop是最简单的循环语句,这种循环语句以loop开头,以end loop结尾,这种循环至少会被执行一次
案例1 现在有一张表,表结构为用户id和用户名

create or replace procedure mypro(spName varchar2) is
v_num number:=;
begin
loop
insert into users values(v_num,spName);
--判断是否要退出循环
exit when v_num=;
v_num:=v_num+;
end loop;
end;

while循环,至少要执行循环体一次,而对于while循环来说,只有条件为true时,才会执行循环语句

create or replace procedure mypro(spName varchar2) is
v_num number:=;
begin
while v_num <= loop
insert into users values(v_num,spName);
v_num:=v_num+;
end loop;
end;

循环语句-for循环

begin
--只能按照1的步长不断增加
for i in reverse .. loop
insert into users values(i,'hh');
end loop;
end;

oracle的控制语句if和循环语句loop while for的更多相关文章

  1. MySQL与Oracle 差异比较之四条件循环语句

    循环语句 编号 类别 ORACLE MYSQL 注释 1 IF语句使用不同 IF iv_weekly_day = 'MON' THEN       ii_weekly_day := 'MON';ELS ...

  2. Oracle中PL/SQL的循环语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  3. 1-23-shell脚本之-if流程控制语句和for循环语句的使用

    大纲: 1.逻辑判断 2.if流程控制语句 3.for循环控制语句   ---------------------------------------------- 在开始之前,先了解一下逻辑判断符号 ...

  4. 『无为则无心』Python基础 — 14、Python流程控制语句(while循环语句)

    目录 1.什么是循环结构 2.while循环 (1)while循环的语法 (2)while循环的应用 3.while语句的死循环 4.break和continue 5.while循环嵌套 (1)应用场 ...

  5. 『无为则无心』Python基础 — 15、Python流程控制语句(for循环语句)

    目录 1.for循环语法 2.for循环中的break和continue 3.循环+else结构 (1)while...else (2)while...else退出循环的方式 (3)for...els ...

  6. oracle中的分支与循环语句

    分支语句 if的三种写法一, if 2 < 1 then dbms_output.put_line('条件成立'); end if; 二, if 2 < 1 then dbms_outpu ...

  7. Oracle PLSQL Demo - 05.WHILE循环[WHILE LOOP]

    declare v_sal ; begin ) loop v_sal :; dbms_output.put_line(v_sal); end loop; end;

  8. oracle学习--循环语句

    oracle学习--循环语句  loop循环: create or replace procedure pro_test_loop is i number; begin i:=0; loop i:=i ...

  9. SQL分支语句与循环语句

    分支语句 if then elsif then else end if 举例: set serveroutput on declare num number; begin num:; then dbm ...

随机推荐

  1. Maven解决Missing artifact com.sun:tools:jar:1.5.0错误

    <dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> ...

  2. Emacs Lisp 功能扩展集锦

    http://docs.huihoo.com/homepage/shredderyin/emacs_elisp.html Emacs 具有超强的扩展性.这是当今没有任何其它编辑器可以比拟 的强大特点. ...

  3. 最大连续子数组问题-homework-01

    1)先写我的 github 的介绍: github 的域名:http://www.github.com/zhuifeng1022 登入 github 大概是下面的视图: 按照助教的方法:我已经建好了代 ...

  4. JavaWeb应用中重定向与跳转的区别

    针对JSP与Servlet: 两种重要的跳转: 1.request.getRequestDispatcher("地址").forward(ServletRequest, Servl ...

  5. 修复Debian(Ubuntu)Grub2 引导

    重装win7, 之前的系统debian 的引导就没有了. 而debian 的盘似乎没有ubuntu的livecd模式,于是用ultraISO将ubuntu的ios文件写入到u盘中. boot时选择启动 ...

  6. crontab 定时任务格式

    如下内容节选自<Linux Crontab 定时任务 命令详解> 用crontab -e 添加要执行的命令 添加的命令必须以如下格式: * * * * * /command path 前五 ...

  7. Hibernate3注解

    1.@Entity(name="EntityName") 必须,name为可选,对应数据库中一的个表 2.@Table(name="",catalog=&quo ...

  8. Cannot retrieve metalink for repository: epel. Please verify its path and try again

    今天在测试环境使用yum安装,遇到一个问题: Error: Cannot retrieve metalink for repository: epel. Please verify its path ...

  9. C#中的强制类型转换与as转换的区别

    C#中的强制类型转换 例如有ClassA与ClassB两个类创建两个类的对象进行转换 1 2 ClassA a = new ClassA();  ClassB b = new ClassB(); 如果 ...

  10. 怎么SDCard上的获取相册照片

    private String getRealPathFromURI(Uri contentUri) { Cursor cursor = null; String result = contentUri ...