【個人筆記】PL/SQL 基本編程

PL/SQL 編程

for update [of] [columnName]

PL/SQL 塊包括 :變量/異常聲明塊、代碼執行塊、異常處理塊

基本格式如下:

DECLARE
    [變量/異常聲明塊];
BEGIN
    [代碼執行塊]
[EXCEPTION
    [異常處理塊]
]
END;
  1. 聲明變量和常量的語法
    Identifier [CONSTANT] DataType [NOT NULL] [:= | DEFAULT expr];
        如:relt number(5) default 5;
            relt constant number(4) := 3;
  1. 給變量賦值的方式
    使用賦值語句 :=
如: [VariableName] [DataType] := [value];
            [VariableName] := [value];
使用 SELECT INTO 語句
    如:select [A ColumnName] into [A VariableName] from [TableName] where [Conditions]; --要求返回值必須是單行單列的值

3. LOB 數據類型

    DBMS_LOB.READ(clob_var,amount,offset,output_var);
        clob_var 存放CLOB數據的變量
        output_var  用於存放從CLOB變量中截取出的值
        amount 要讀取的字符數
        offset (相對起始位置)偏移量
  1. 關於 %TYPE 與 %ROWTYPE 的使用
    %TYPE 引用變量和數據庫列的數據類型
    %ROWTYPE 提供表示表中一行的記錄類型
        如: variable Table.Column%TYPE;
            rowvariable Table%ROWTYPE;
  1. 關於邏輯比較
     = <> != < > <= >=
  1. 條件控制語句
    - IF
        if [Condition expr] then

        elif
            [Commands]
            ...
        else
            [Commands]
        end if;
    - CASE
        case '&variable'
        when [value] then 
            [Commands];
        ...
        else
            [Commands];
        end case;
  1. 循環控制語句
    - LOOP 無條件循環
        loop
            [Commands];
        end loop;
- WHILE 根據條件循環
        while [Condition expr] loop
            [Commands];
        end loop;
    - FOR 循環固定的次數
        for [variable] in [reverse] [variable array | value1..value2] loop
            [Commands];
        end loop;
  1. 順序控制語句
- GOTO 無條件跳轉
        BEGIN
            <<FLAG>>
            [Commands];
            goto QUIT;
            goto FLAG;
            <<QUIT>>
            NULL;
        END;
    - NULL 空語句
        在任何語句塊都可使用 NULL; 來充當一條語句
  1. 動態 SQL
    指在PL/SQL程序執行時生成的SQL語句,編譯程序對動態SQL不做處理,而是在程序運行時動態構造語句、對語句進行語法分析並執行。
    DDL 語句命令和會話控制語句不能在PL/SQL中直接使用,但是可以通過動態SQL來執行。
    基本語法如下:
    EXECUTE IMMEDIATE dynamic_sql_string 
        [INTO define_variable_list]
        [USING bind_argument_list];
        -- list中有多個變量,用 ',' 分隔
如:
declare 
             sql_str varchar2(100);
             sid student.sid%type;
             sname student.sname%type;
        begin
             sid := '&sid';
             sname := '&sname';
             execute immediate 'insert into student(sid,sname) values(:sid,:sname)' using sid,sname;
             commit;
        end;
        --以上SQL語句中 values() 裏的 ‘:sid’ 表示的是一個變量(‘sid’是變量名,該變量名可隨意,但不可省略),該變量的值順序對應 using 後跟着參數列表裏的值。

10. 異常
在運行程序時出現的錯誤叫做異常,發生異常後,將停止執行,控制權轉移到PL/SQL塊的異常處理部分。

拋出異常的方式:
    -使用 RAISE 關鍵字

異常有兩種類型:預定義異常、用戶定義異常
    -預定義異常
        TOO_MANY_ROWS  等

    -用戶定義異常
        定義異常的方式與定義變量的方式相同
exceptionname EXCEPTION; --EXCEPTION 是異常類型
        如:
            myexception EXCEPTION;
其他:
    others 表示其他異常,必須用於所有異常處理的結尾(即最後一個異常處理)
    sqlerrm 表示異常信息
例子:
declare 
        myexception exception;
        otherexception exception;
        begin
            -- raise myexception;
             raise otherexception;
        exception
                 when myexception then
                      dbms_output.put_line('get a exception !');
                 when others then
                      dbms_output.put_line('get a other exception !');
        end;
  1. 引發程序錯誤
    RAISE_APPLICATION_ERROR(error_number,error_message);
        -用於創建用戶定義的錯誤信息
        -可以在可執行部分和異常處理部分使用
        -錯誤編號必須介於 -20000 和 -20999 之間
        -錯誤消息的長度可長達 2048 個字節
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章