oracle 結構設計
1 條件分之語句? 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_val+200
??? where lower(ename)=lower('&name');
?? end if;
? end;
?2 二重條件分支
? if v_comm<>0 then
????? .....
? else
???? ........
? end if;
?3 多重條件分支
? IF?? THEN
? ELSIF?? THEN
? ELSIF?? THEN
? ELSE
? END IF;
2 case 語句
? 1 在case 語句中使用單一選擇符進行等值比較
??? declare
????? v_deptno emp.deptno%type
??? begin
????? v_deptno:=&no;
????? case v_deptno
???????? when 10 then
?????????? update emp...
???????? when 20 then
?????????? update ......
???????? else
????????? dems_out.put_line('不存在該部門');
????? end case;
??? end;
? 2 在case 語句中使用多種比較條件
??? declare
????? v_sal emp.sal%type
????? v_ename emp.ename%type
??? begin
???? select ename ,sal into vv_ename,v_sal
???? from emp where empno=&no;
???? case
?????? when v_sal<1000 then
???????? update emp set ...
?????? when v_sal<2000 then
???? end case;
3 循環語句
? 1 基本循環
?? declare
??? i INT:=1;
?? begin
??? loop
???? insert into temp valuse(1);
???? exit when i=10;
???? i:=i+1;
??? end loop;
?? end;
? 2 while 循環
??? while i<=10 loop
????? insert into tem valuse(i);
????? i:=i+1;
???? end loop;
? 3for 循環
??? for i in reverse 1..10 loop
????? insert into temp values(1);
??? end loop;
4 順序控制語句
? 1 goto
??? goto label_name;
??? loop
????? ...
????? goto end_loop;
??? <<end loop>>
???? dbms_output
?? 2 null 語句不會執行任何操作,并且會直接將控制傳遞道下一條語句
??? if v_sal<3000 then
????? update emp set .....
??? else
????? null;
??? end if;