PL/SQL 中的儲存過程與函式

布still發表於2017-09-05

儲存過程概述

PL/SQL塊分類

PL/SQL塊分類:匿名塊、命名塊
匿名塊:不儲存在資料庫中,沒有名稱,不可以重複呼叫
命名塊:存在資料庫中,有名稱,可以重複呼叫
命名塊:儲存過程、函式、觸發器、包

儲存過程與函式概述

儲存過程與函式:都是一個子程式,完成一定的功能
儲存過程:沒有返回值,可以呼叫
函式:必須包含一個返回值,只能作為表示式的一部分使用

儲存過程的建立

儲存過程的建立

CREATE PROCEDURE proc[(name [IN|OUT|INOUT] type, ...)]
AS|IS
    declare statement;
BEGIN
    statement;
EXCEPTION
    exception process;
END;
引數 描述 詳解
IN 只讀 當 SQL 語句建立的時候,該引數的值是未知的。你可以用 setXXX() 方法將值繫結到 IN 引數裡
OUT 只寫 該引數的值是由 SQL 語句的返回值。你可以用 getXXX() 方法從 OUT 引數中檢索值
INOUT 可讀寫 該引數同時提供輸入和輸出值。你可以用 setXXX() 方法將值繫結到 IN 引數裡,並且也可以用 getXXX() 方法從 OUT 引數中檢索值

儲存過程的呼叫和刪除

儲存過程的呼叫

PL/SQL塊:

proc[(arg1, ...)]

SQL Plus環境

BEGIN
    proc[(arg1, ...)]
END;

刪除儲存過程

DROP PROCEDURE proc_name;

JDBC 的 SQL 轉義語法

轉義語法使能夠讓你通過使用標準的 JDBC 方法和屬性,來靈活的使用資料庫的某些特定功能,而該特定功能對你來說本來是不可用的。常用的 SQL 轉義語法格式如下所示:

{keyword `parameters`}

escape 關鍵字

該關鍵字在 LIKE 子句中使用,來定義轉義字元。當使用 SQL 萬用字元%,來匹配零個或多個字元時,該關鍵字就非常有用。例如-

String sql = "SELECT symbol FROM MathSymbols
              WHERE symbol LIKE `\%` {escape ``}";
stmt.execute(sql);

如使用反斜槓字元()作為轉義字元,必須在 Java 字串裡使用兩個反斜槓字元,因為反斜槓也是一個Java轉義字元

fn 關鍵字

該關鍵字代表在資料庫管理系統中使用標量函式。如可使用 SQL 的 length 函式來計算字串的長度-


{fn length(`Hello World`)}

這將返回11,也就是字串`Hello World`的長度

call 關鍵字

該關鍵字是用來呼叫儲存過程的。例如,對於一個需要一個 IN 引數的儲存過程,使用以下語法-


{call my_procedure(?)};

對於需要一個 IN 引數並返回一個 OUT 引數的儲存過程,使用下面的語法-

{? = call my_procedure(?)};

oj 關鍵字

該關鍵字用來表示外部連線,其語法如下所示-

{oj outer-join}

其中 outer – join = 表 { LEFT | RIGHT | FULL } OUTER JOIN {表| outer – join }的搜尋條件。例如-

String sql = "SELECT Employees 
              FROM {oj ThisTable RIGHT
              OUTER JOIN ThatTable on id = `100`}";
stmt.execute(sql);

相關文章