'manager ' then
Update empset sal=sal+500 where empno-spNo;
Else
Update empset sal =sal+200 where empno=spNo;
End if ;
End;
调用 sql>Execsp_pro6(7839)
循环语句
Loop End loop 至少执行一次,先循环再判断
create or replace proceduresp_pro6 (spName varchar2) is
--定义 := 表示赋值
v_num number:=1;
Begin
Loop
insert into users values (v_num,spName);
--判断是否要退出循环
exit when v_num=10;
--自增
v_num :=v_num+1
End loop;
End;
循环语句 while循环
先判断后循环
create or replace proceduresp_pro6 (spName varchar2) is
--定义 := 表示赋值
v_num number:=11;
Begin
While v_num <=20 loop
--执行
insert into users values (v_num,spName);
--自增
v_num :=v_num+1
End loop;
End;
for循环
Begin
For I inreverse 1….10 loop
Insert into users values(I,'顺平');
End loop;
End;不建议使用
顺序控制语句
Goto 建议不用 循环嵌套不要超过三层
用于跳转到特定标号去执行 语句,注意用于使用go to增加复杂性,可读性差
Declare
i int :=1;
Begin
Loop
dbms_output.put_line('输出i=' || i);
if I =10 then
got end_loop;
end if;
i:=i+1;
end loop;
<
>
--<<>>goto 标号
Dbms_output.put_line('循环结束');
End;
Null
不会执行任何操作,将控制传递下一句
提高可读性
Declare
v_salemp.sal%type;
v_enameemp.ename%type;
Begin
Select ename,sal into v_ename,v_val
From empwhere empno=%no;
If v_sal<3000 then
Update empsel comm =sal*0.1 where ename=v_ename;
Else
Null;
End if ;
End;
pl/sql出于sql,所以很大一部分沿袭了sql,之前sql server的学习中没有这么深入的接触,这次在pl/sql里面学到的东西更多,学习就这样从不同的角度看问题,然后全面了解它。