13-1:簡單的條件判斷
declare
v_sal number(6,2);
begin
select sal into v_sal from emp
where lower(ename)=lower('&&name');
if v_sal<2000 then
update emp set sal=v_sal+200
where lower(ename)=lower('&name');
end if;
end;
/13-2:二重條件分支
declare
v_comm number(6,2);
begin
select comm into v_comm from emp
where empno=&&no;
if v_comm<>0 then
update emp set comm=v_comm+100
where empno=&no;
else
update emp set comm=200
where empno=&no;
end if;
end;
/13-3:多重條件分支
declare
v_job varchar2(10);
v_sal number(6,2);
begin
select job,sal into v_job,v_sal
from emp where empno=&&no;
if v_job='president' then
update emp set sal=v_sal+1000 where empno=&no;
elsif v_job='manager' then
update emp set sal=v_sal+500 where empno=&no;
else
update emp set sal=v_sal+200 where empno=&no;
end if;
end;
/13-4:在case語句中使用單一選擇符進行等值比較
declare
v_deptno emp.deptno%type;
begin
v_deptno:=&no;
case v_deptno
when 10 then
update emp set comm=100 where deptno=v_deptno;
when 20 then
update emp set comm=80 where deptno=v_deptno;
when 30 then
update emp set comm=50 where deptno=v_deptno;
else
dbms_output.put_line('不存在該部門');
end case;
end;
/13-5:在case語句中使用多種條件比較
declare
v_sal emp.sal%type;
v_ename emp.ename%type;
begin
select ename,sal into v_ename,v_sal
from emp where empno=&no;
case
when v_sal<1000 then
update emp set comm=100 where ename=v_ename;
when v_sal<2000 then
update emp set comm=80 where ename=v_ename;
when v_sal<6000 then
update emp set comm=50 where ename=v_ename;
end case;
end;
/13-6:基本迴圈
create table temp(cola int);
declare
i int:=1;
begin
loop
insert into temp values(i);
exit when i=10;
i:=i+1;
end loop;
end;
/13-7:while迴圈
declare
i int :=1;
begin
while i<=10 loop
insert into temp values(i);
i:=i+1;
end loop;
end;
/13-8:for迴圈
begin
for i in reverse 1..10 loop
insert into temp values(i);
end loop;
end;
/13-9:巢狀迴圈和標號
declare
result int;
begin
<>
for i in 1..100 loop
<>
for j in 1..100 loop
result:=i*j;
exit outer when result=1000;
exit when result=500;
end loop inner;
dbms_output.put_line(result);
end loop outer;
dbms_output.put_line(result);
end;
/13-10:exit和exit when語句
declare
i int:=1;
begin
loop
dbms_output.put_line(i);
exit when i=5;
i:=i+1;
end loop;
end;
/13-11:countinue和continue when語句
declare
i int:=0;
begin
loop
i:=i+1;
continue when i=3;
dbms_output.put_line(i);
exit when i=5;
end loop;
end;
/13-12:goto
declare
i int:=1;
begin
loop
insert into temp values(i);
if i=10 then
goto end_loop;
end if;
i:=i+1;
end loop;
<>
dbms_output.put_line('迴圈結束');
end;
/13-13:null
declare
v_sal emp.sal%type;
v_ename emp.ename%type;
begin
select ename,sal into v_ename,v_sal
from emp where empno=&no;
if v_sal<3000 then
update emp set comm=sal*0.1 where ename=v_ename;
else
null;
end if;
end;
/
C Primer學習筆記 13 拷貝控制
題記 本系列學習筆記 c primer學習筆記 主要目的是討論一些容易被大家忽略或者容易形成錯誤認識的內容。只適合於有了一定的c 基礎的讀者 至少學完一本c 教程 如果文中有錯誤或遺漏之處,敬請指出,謝謝!c 類中有四個不可或缺的部分,那就是建構函式 拷貝建構函式 賦值操作符和析構函式。如果類中沒有...
halcon學習筆記 (13)運算元 控制
assign input result 指定乙個新值給控制變數 comment comment 為程式新增一行注釋 exit 終止hdevelop global declaration 申明乙個全域性變數 insert input,value,index result 分配乙個值到乙個元組元素 re...
halcon學習筆記 (13)運算元 控制
assign input result 指定乙個新值給控制變數 comment comment 為程式新增一行注釋 exit 終止hdevelop global declaration 申明乙個全域性變數 insert input,value,index result 分配乙個值到乙個元組元素 re...