PL/SQL 宣告

Ryan_Bai發表於2019-11-14

一、命名規範

  • 命名方法

    命名方法
    適用
    UserPrivilege 適合英文比較好,並且喜歡抑揚頓挫和有藝術美感的人
    userprivilege 適合那些英文好,且比較嚴謹的人
    tbl_user_prifilege 適合那些做開發的人(本人常用的命名規範)
    yhqx 熱愛中文的人
  • 不使用關鍵字
    可以參考如下查詢結果

    SELECT * FROM V$RESERVED_WORDS WHERE RESERVED='Y';
  • 長度
    1~30個字元

二、定義常量

  • 語法:常量名 constant 資料型別識別符號 [not null] := 值

  • 例子:

    i_count constant Int not null:=200      --定義常量i_count,值為200;

三、定義基本資料型別變數

  • 語法:變數名 型別識別符號 [not null] := 值

  • 例子:

    sex Boolean not null :=0;                     --定義變數sex 值為0;

四、使用%TYPE定義變數

這個型式是為了讓變數的資料型別與表中的資料型別一致的,定義好以後,表中的資料型別改變,這個變數的資料型別也同時改變;

  • 語法:變數名 使用者名稱.表名.欄位名%TYPE;

  • 例子:

    sex SCOTT.Tdetails.SEX%TYPE;       --sex變數就與scott使用者下的Tdetails表中的sex欄位的型別一致;

五、記錄型別變數

記錄型別是把邏輯相關的資料作為一個單元儲存起來,它必須包括至少一個標量型或RECORD 資料型別的成員,稱作PL/SQL RECORD 的域(FIELD),其作用是存放互不相同但邏輯相關的資訊。

  • 語法:

    TYPE 變數名 IS RECORD(
       變數名1 基本資料型別,
       變數名2 基本資料型別,……);
  • 例子:

    TYPE tRecords IS RECORD(  
       Name varchar2,  
       Sex Boolean);  
       ttt tRecords;    --使用這個變數的的方法
       
    Select name,sex into ttt from classuser;    --這樣就把classuser表裡的資料放到變數ttt中了.

六、使用%ROWTYPE定義變數

使定義的變數的子變數的型別與表中對應的欄位的資料型別一致。

  • 語法:變數名 使用者名稱.表名%TYPE;

  • 例子:

    DECLARE  
      to_records tdetails%ROWTYPE;  
    BEGIN  
      SELECT * INTO to_records FROM tdetails where type='pay';  
      DBMS_OUTPUT.PUT_LINE(to_records.object||' '||toRecords.money||' '||toRecords.payDate);  
    END;

七、定義一維表型別資料

相當於一維陣列

  • 語法:TYPE 表型別 IS TABLE OF 型別 INDEX BY BINARY_INTEGER;

  • 例子:

    TYPE score IS TABLE OF INT(3) INDEX BY BINARY_INTEGER;    --定義了一個整數陣列容量為3;  
    score(1)=1;score(2)=2; ……    --訪問的時候用


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2664065/,如需轉載,請註明出處,否則將追究法律責任。

相關文章