存储过程概述
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);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。