首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

PLSQL条件统制

2012-10-31 
PLSQL条件控制/**??if条件控制语句*/declare?? ?sal number : 500?? ?comm numberbegin?? ?if sal 10

PLSQL条件控制

/**

??if条件控制语句

*/

declare

?? ?sal number := 500;

?? ?comm number;

begin

?? ?if sal < 100 then

?? ? ? comm := 0;

?? ?elsif sal < 600 then

?? ? ? comm := sal*0.1;

?? ?elsif sal < 1000 then

?? ? ? comm := sal*0.2;

?? ?else

?? ? ? comm := sal*0.3;

?? ?end if;

?

?? ?dbms_output.put_line(comm);

?

end;

?

结果:50

?

/**

?? ?case条件控制语句

*/

declare?

?? ?v_sal number := 1000;

?? ?v_tax number;

begin

?? ?case

?? ? ? ? ?when v_sal < 1500 then

?? ? ? ? ? ? ? v_tax := v_sal*0.1;

?? ? ? ? ?when v_sal < 2500 then

?? ? ? ? ? ? ? v_tax := v_sal*0.2;

?? ? ? ? ?when v_sal < 3500 then

?? ? ? ? ? ? ? v_tax := v_sal*0.3;

?? end case;

?

?? dbms_output.put_line(v_tax);

end;

?

结果:100

?

/**

?? ?case条件控制语句

*/

declare

?? ?v_name varchar2(40);

begin

?? ?select ename into v_name from emp where empno='7788';

?

?? ?case v_name

?? ? ? ? when 'SCOTT' then

?? ? ? ? ? ? ?dbms_output.put_line('SCOTT');

?? ? ? ? when 'SMITH' then

?? ? ? ? ? ? ?dbms_output.put_line('SMITH');

?? ?end case;

end;

?

结果:SCOTT

?

/**

?? ?loop循环控制语句

*/

declare

?? ?v_index number := 10;

begin

?? ?loop

?? ? ? ?exit when v_index = 0; ? ?

?? ? ? ?insert into teacher values(v_index, 'name'||v_index, v_index); --向表中插入数据

?? ? ? ?v_index := v_index -1;

?? ?end loop;

?? ?commit;

end;

?

结果:向teacher表中插入10条数据

?

/**

?? ?while循环控制语句

*/

declare

?? ?v_index number := 10;

begin

?? ?while v_index > 0

?? ?loop

?? ? ? ? ?delete from teacher where id=v_index; --删除表中数据

?? ? ? ? ?v_index := v_index - 1;

?? ?end loop;

?? ?commit;

end;

?

结果:删除teacher表中插10条数据

?

/**

?? ?for循环控制语句

*/

begin

?? ?for i in 1..10 loop

?? ? ? ?dbms_output.put_line(i);

?? ?end loop;

?

?? ?for i in reverse 1..10 loop

?? ? ? ?dbms_output.put_line(i);

?? ?end loop;

end;

?

结果:先输出1到10,再输出10到1

?

/**

?? ?for嵌套循环控制语句

*/

?

declare?

?? ?result integer;

begin

?? ?<<outer>>

?? ?for i in 1..10 loop

?? ? ? ?<<inner>>

?? ? ? ?for j in 1..10 loop

?? ? ? ? ? ?dbms_output.put_line('i值:'||i||' j值:'||j);?

?? ? ? ? ? ?exit when j = 5; --跳出内层循环

?? ? ? ? ? ?exit outer when i = 5; --跳出外层循环

?? ? ? ?end loop;

?? ?end loop;

end;

?

热点排行