存储函数、控制语句、循环语句

存储函数




一、概念与存储过程相比,存储函数是有返回值的:而且创建存储函数的关键字也不一们:函数关键字:Function 过程关键字:procedure

二、创建存储函数
语法:Create function 函数名(参数......)Return 数据类型 is定义变量;Begin执行语句;Return 变量;End;/

范例:
请编写一个函数,可以接收用户名,并返回这个用户的年薪

create function my_fun(v_name varchar2)
return  number is 
v_sal number;
begin
select sal into v_sal from  emp where ename=v_name;
return v_sal;
end;
/
--调用函数
select my_fun('SMITH') from dual;

二、sql条件控制语句
1.简单条件判断:
语法:
If 判断条件 then
End if;


范例:
编写一个过程,可以输入一个员工名字,如果该员的工资低于2000,则给这个员工加1000.
create procedure my_if(v_name varchar2)
is
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename=v_name;
if v_sal<2000 then
update emp set sal=sal+1000 where ename=v_name;
end if;
end;
/

调用过程call my_if('SMITH');

查看:
select * from emp;


2.二重条件分支
If 判断条件 then  
条件成立完成的功能;
Else
条件不成立完成的功能;
End if;

范例:
编写一个过程,可以输入一个员工名字,如果员工的奖金不是0,则在原来的基础上增加200,;如果为0 则将其设置为500;

create procedure my_if_else(v_name varchar2)
is
v_comm emp.comm%type;
begin
select comm into v_comm from emp where ename=v_name;
if v_comm<>0 then
update emp set comm=comm+200 where ename=v_name;
else
update emp set comm=500 where ename=v_name;
end if;
end;
/

调用过程:
call my_if_else('SMITH');

查看结果:
select * from emp;



3.多重条件分支
If 判断条件 then  
条件成立完成的功能;
Elsif 判断条件 then
条件成立完成的功能;
Else
条件不成立完成的功能;
End if;

范例:
编写 一个过程,可以输入员工编号,如果该员的职位是PRESIDENT就给他的工资增加1000,
如果职位是:MANAGER 就给他的工资增加500,其他的员工都增加200;

create procedure my_if_elsif(v_empno number)
is
v_job emp.job%type;
begin
select job into v_job from emp where empno=v_empno;
if v_job='MANAGER' then
update emp set sal=sal+500 where empno=v_empno;
elsif v_job='PRESIDENT' then
update emp set sal=sal+1000 where empno=v_empno;
else 
update emp set sal=sal+200;
end if;
end;
/

调用过程:
call my_if_elsif(7369);

查看结果:
select * from emp;



三、循环语句:
1.Loop--->与do.....while()类似:
语法:
以loop开头,以end loop结尾,这种循环至少会被执行一次

案例:
1.有一张新表users,编写一个过程,可以输入用户名,并循环添加10个用户到users 表中,用户编号,从1 开始增加


        
        

第一步:创建一个表users

create table users(id number primary key, name varchar2(20) not null);


遍写过程:
create procedure my_pro(v_name varchar2)
is
v_num number:=1;
begin
loop
insert into users values(v_num,(v_name||v_num));
exit when v_num=10;
v_num:=v_num+1;
end loop;
end;
/


调用过程:
call my_pro('zhang');

查看结果:



While循环

语法:
While  循环条件 
loop
 .....end loop;

案例:编写一个过程,用while添加用户,从第11个开始增加数据



For循环












  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值