PL/SQL 常用流程控制语句在存储过程中的运用

 PL/SQL 流程控制

条件分支:

1) IF..THEN..END IF

用法举例:

该存储过程可以输入一个雇员名称,如果该雇员的工资小雨2000就给他加工资加10%.

代码如下:

CREATE OR REPLACE PROCEDURE sp_procedure_myemp(spname vachar12) IS

--定义

v_sal myemp.sal%type;

BEGIN

--执行

SELECT myemp.sal INTO v_sal from myemp WHERE myemp.ename=spname;

--判断

IF v_sal<2000 THEN 

UPDATE myemp SET sal=sal+sal*0.1 WHERE myemp.ename=spname;

END IF;

END;

2) IF..THEN--ELSE..END IF

用法举例:

该存储过程可以输入一个雇员名称,如果该雇员的奖金如果为0,就给该雇员加200,如果不是0就加100.

代码如下:

CREATE OR REPLACE PROCEDURE sp_procedure_myemp(spname vachar12) IS

--定义

v_comm myemp.comm%type;

BEGIN

--执行

SELECT myemp.comm INTO v_comm from myemp WHERE myemp.ename=spname;

--判断

IF v_comm<>0 THEN 

UPDATE myemp SET comm=comm+100 WHERE myemp.ename=spname;

ELSE

UPDATE myemp SET comm=comm+200 WHERE myemp.ename=spname;

END IF;

END;

3) IF..THEN--ELSIF..THEN--ELSE..END IF

用法举例:

该存储过程可以输入一个雇员可以输入一个雇员编号,如果该雇员的工作(Job)是"PRESIDENT"就给他的工资加1000,如果是"MANAGER"就给他的工资加500,否则就给加200.

代码如下:

CREATE OR REPLACE PROCEDURE sp_procedure_myemp(spno NUMBER) IS

--定义

v_job myemp.job%type;

BEGIN

--执行

SELECT myemp.job INTO v_job from myemp WHERE myemp.empno=spno;

--判断

IF v_job ='PRESIDENT' THEN 

UPDATE myemp SET sal=sal+1000 WHERE  myemp.empno=spno;

ELSIF v_job ='MANAGER' THEN

UPDATE myemp SET sal=sal+500 WHERE  myemp.empno=spno;

ELSE

UPDATE myemp SET sal=sal+200 WHERE  myemp.empno=spno;

END IF;

END;

循环语句

LOOP--END LOOP

用法举例:

编写一个存储过程可允许输入用户名,循环向USERS表中添加十条数据.

CREATE OR REPLACE PROCEDURE sp_procedure_users(uname VARCHAR2) IS

--定义

v_no NUMBER:=1;

BEGINa

--执行 

LOOP

INSERT INTO users VALUES(v_no,uname);

--判断是否要退出循环

EXIT WHEN v_no=10 ;

--自增

v_no:=v_no+1;

End LOOP;

END;

WHILE--LOOP--END LOOP

用法举例

编写一个存储过程可允许输入用户名,循环向USERS表中添加十条数据,从地十一条开始.

CREATE OR REPLACE PROCEDURE sp_procedure_users(uname VARCHAR2) IS

--定义

v_no NUMBER:=11;

BEGIN

--执行 

WHILE  v_no<=20  LOOP

INSERT INTO users VALUES(v_no,uname);

--自增

v_no:=v_no+1;

End LOOP;

END;

注意:以上循环操作需手动创建users表,且有两个字段分别是num(NUMBER)uname(VARCHAR2(12))

FOR 循环

用法举例

该存储过程根据输入的步长循环打印。

代码如下:

CREATE OR REPLACE PROCEDURE proc_test ( v_num NUMBER )  AS

     BEGIN

        FOR x IN 1 .. v_num  LOOP

       DBMS_OUTPUT.put_line ( x );

        END LOOP;

END ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值