PL/SQL 中的存储过程与函数

存储过程概述

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);
    原文作者:布still
    原文地址: https://segmentfault.com/a/1190000011029499
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞