儲存過程概述
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);