PL/SQL塊分類:匿名塊、命名塊
匿名塊:不保存在數據庫中,沒有名稱,不能夠重複調用
命名塊:存在數據庫中,有名稱,能夠重複調用
命名塊:存儲過程、函數、觸發器、包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環境code
BEGIN proc[(arg1, ...)] END;
DROP PROCEDURE proc_name;字符串
轉義語法使可以讓你經過使用標準的 JDBC 方法和屬性,來靈活的使用數據庫的某些特定功能,而該特定功能對你來講原本是不可用的。經常使用的 SQL 轉義語法格式以下所示:get
{keyword 'parameters'}
該關鍵字在 LIKE 子句中使用,來定義轉義字符。當使用 SQL 通配符%,來匹配零個或多個字符時,該關鍵字就很是有用。例如-io
String sql = "SELECT symbol FROM MathSymbols WHERE symbol LIKE '\%' {escape '\'}"; stmt.execute(sql);
如使用反斜槓字符()做爲轉義字符,必須在 Java 字符串裏使用兩個反斜槓字符,由於反斜槓也是一個Java轉義字符table
該關鍵字表明在數據庫管理系統中使用標量函數。如可以使用 SQL 的 length 函數來計算字符串的長度-搜索
{fn length('Hello World')}
這將返回11,也就是字符串'Hello World'的長度exception
該關鍵字是用來調用存儲過程的。例如,對於一個須要一個 IN 參數的存儲過程,使用如下語法-
{call my_procedure(?)};
對於須要一個 IN 參數並返回一個 OUT 參數的存儲過程,使用下面的語法-
{? = call my_procedure(?)};
該關鍵字用來表示外部鏈接,其語法以下所示-
{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);