程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle中PL/SQL的執行部分和各種流程控制

Oracle中PL/SQL的執行部分和各種流程控制

編輯:Oracle教程

Oracle中PL/SQL的執行部分和各種流程控制


Oracle中PL/SQL的執行部分和異常部分   一.PL/SQL的執行部分。   賦值語句。   賦值語句分兩種,一種是定義一個變量,然後接收用戶的IO賦值;另一種是通過SQL查詢結果賦值。   用戶賦值舉例:
set serveroutput on;
accept abc prompt '請輸入abc的值';
DECLARE
     a int:= &abc;
BEGIN
     dbms_output.put_line(a);
END;

 

  查詢賦值舉例:
set serveroutput on;
DECLARE
  str varchar2(20);
BEGIN
  select ename into str from emp where empno='7369';
  dbms_output.put_line(str);
END;

 

  流程控制語句。   PL/SQL的主要控制語句如下:   1.if...then      elsif … then      end if;   判斷if正確則執行then,否則執行else(elsif為嵌套判斷)   注意elsif,裡面少一下e.   2.Case  var  when … then    when … then   end   有邏輯的從數值中做出選擇   3.Loop     exit    end loop   循環控制,用判斷語句執行exit   4.Loop       exit when …        end loop   同上,當when為真時執行exit   5.while..loop         end loop   當while為真時循環   6.for...in...loop        end loop   已知循環次數的循環   因為流程控制比較多,在這裡就不一一舉實例了,寫幾個比較經典的程序給大家看一下。  
********打印9*9乘法表*********

for in..loop
set serveroutput on;
DECLARE
  i number;
  j number;
BEGIN
 for i in 1..9 loop
  for j in 1..i loop
    dbms_output.put(i||'*'||j||'='||(i*j)||'  ');
  end loop;
  dbms_output.put_line('');
 end loop;
END;
while  loop

set serveroutput on;
declare
  i number:=1;
  j number:=1;
begin
  while i<10 loop
    while j<=i loop
      dbms_output.put(i||'*'||j||'='||(i*j)||'  ');
      j:=j+1;
    end loop;
    i:=i+1;
    j:=1;
    dbms_output.put_line('');
  end loop;
end;

 

*********計算1+2+..+10的值*********

loop exit  & loop exit when

set serveroutput on;
declare
  i number:=1;
  i_sum number:=0;
begin
  loop
    i_sum:=i_sum+i;
    i:=i+1;
    if i>10 then
      exit;
    end if;
  end loop;
  dbms_output.put(i_sum);
  dbms_output.put_line('');                
end;

 

注意:put只是把輸出結果放入緩沖區,直到遇到put_line時才會輸出。所以只有put的時候,不會顯示i_sum的結果。   可以把 if i>10 then exit; end if;  換成exit when i>10;這樣就成為了loop ..exit when .. end loop 結構。  
*********輸入一個字符,判斷是字母、數字還是其他字符****************

 if then elsif else

set serveroutput on;
declare
 i_char varchar2(2);
begin
  i_char:=&abc;
  if regexp_like(i_char,'^[a-z]$')   then
    dbms_output.put_line('輸入的是字母');
  elsif  regexp_like(i_char,'^[0-9]$') then
    dbms_output.put_line('輸入的是數字');
  else
    dbms_output.put_line('輸入的是其他字符');
  end if;
end;
case  when

set serveroutput on;
declare
  i_char varchar2(2);
  i_result varchar2(30);
begin
  i_char:=&abc;
  i_result:=
  case
  when regexp_like(i_char,'^[a-z]$')   then
    '輸入的是字母'
  when regexp_like(i_char,'^[0-9]$')   then
    '輸入的是數字'
  else
    '輸入的是其他字符'
  end;
  dbms_output.put_line(i_result);
end;

 

  注意:在提示窗口中輸入的時候,字符串一定要加單引號,否則就會出錯,本人每次在這裡都要拌一下。   SQL語句   SQL語句就是數據庫查詢語句,比較簡單就不在這裡說了。   游標語句   二.異常部分。   數據庫中的異常跟java中的異常的機制和作用原理是一樣的,只是代碼和格式不一樣,數據庫中的異常分為三類:系統異常(預定義異常)、自定義異常以及引發應用程序異常。   系統異常   PL/SQL程序在運行過程中,可能會出現錯誤或異常現象   例如:無法建立到Oracle的連接或用0做除數。好的程序應該對可能發生的異常情況進行處理,異常處理代碼在EXCEPTION塊中實現   可以使用WHEN語句來定義異常。WHEN語句的使用方法如下:   EXCEPTION          WHEN <異常情況名> THEN                <異常處理代碼>          WHEN <異常情況名> THEN             <異常處理代碼>          ...          WHEN OTHERS THEN             <異常處理代碼>   常見的系統異常 自定義異常   當與一個異常錯誤相關的錯誤出現時,就會隱含觸發該異常錯誤。用戶定義的異常錯誤是通過顯式使用 RAISE 語句來觸發。當引發一個異常錯誤時,控制就轉向到 EXCEPTION塊異常錯誤部分,執行錯誤處理代碼。   對於這類異常情況的處理,步驟如下:   在PL/SQL 塊的定義部分定義異常情況:   <異常名稱>  exception;   在PL/SQL 塊的執行部分RAISE異常:   RAISE <異常名稱>;   在PL/SQL 塊的異常情況處理部分對異常情況做出相應的處理。   WHEN <異常名稱> THEN   代碼...    引發應用程序異常

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved