orcale 存儲過程學習

1、生成語句

 create [or replace] procedure <過程名>

    (

    <參數1> [方式1] <數據類型1>,

    <參數2> [方式2] <數據類型2>

    )

    is|as

    PS/SQL過程體;


2、

into:賦值
is|as 此處無區別
參數: in傳入, out輸出


3、

%TYPE: %TYPE用來聲明一個變量和指定表的column一樣的數據類型
%ROWTYPE: %ROWTYPE用來聲明一個和表中記錄一樣的record.


4、pl/sql三種循環

set serveroutput on;
declare
i number;
begin
    --正序循環
    for i in 1..5 loop
        DBMS_OUTPUT.PUT_LINE('正序for:i='||i);
    end loop;
    --倒序循環
    for i in reverse 1..5 loop
        DBMS_OUTPUT.PUT_LINE('倒序for:i='||i);
    end loop;
    --while循環
    i:=0;
    while i<5 loop
        i:=i+1;
        DBMS_OUTPUT.PUT_LINE('while:i='||i);
    end loop;
    --loop循環
    i:=0;
    loop
        DBMS_OUTPUT.PUT_LINE('loop:i='||i);
    i:=i+1;
    exit when (i>=5);
    end loop;
end;


5. case...when

  1)case  變量

        when   'a'  then

         when   'b'  then

        else

      end case

  2)case

          when  條件1  then

           when   條件2  then

          else

        end case


6、record用法

SET SERVEROUTPUT ON;

DECLARE
   TYPE type_record IS RECORD
   (
      name1   VARCHAR (20):= 'world',
      age     NUMBER:= 20
   );

   v_type_record   type_record;
BEGIN
   v_type_record.name1 := 'hello';
   v_type_record.age := 15;
   DBMS_OUTPUT.put_line (v_type_record.name1 || ' ' || v_type_record.age);
END;



7、exception異常

set serveroutput on;
declare
 v_school B_W_XXWH%rowtype;
 begin
    
    DBMS_OUTPUT.PUT_LINE(1/0);
    
    EXCEPTION
    WHEN no_data_found then
        DBMS_OUTPUT.PUT_LINE('沒有數據'||sqlerrm || sqlcode);
    when others then
    begin
        DBMS_OUTPUT.PUT_LINE('未知錯誤');    
    end;
 end;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章