db2 存储过程编写定义
一、CREATE PROCEDURE
语句的主要组成部分有:
PARAMETER TYPE
: 有三种参数类型:IN
用于输入参数。对这些参数的更改不会传回到调用该过程的应用程序。OUT
用于输出参数。对这些参数的更改会传回到调用该过程的应用程序。INOUT
用于输入和输出。对这些参数的更改以及它们的输入值会影响存储过程和调用该过程的应用程序。
SPECIFIC
: 为了在内部标识一个过程而指定的一个特定名称。如果没有指定名称,则 DB2 会赋予一个系统生成的值。对于重载存储过程,这一点特别有用。DYNAMIC RESULT SETS
: 指定保持打开并传回给调用程序或应用程序的结果集的数量。DETERMINISTIC
: 指定对于给定的参数值,该过程是否总是返回相同的结果。LANGUAGE
: SQL 过程仅支持 DB2 SQL PL 语言。
和用户定义函数一样,存储过程有三种访问数据库的模式,这些模式决定了存储过程如何与数据库交互,以及使用什么类型的 SQL:
CONTAINS SQL
: 表明存储过程可以执行既不读取也不修改 SQL 数据的 SQL 语句。READS SQL
: 表明存储过程中可以包括某些不修改 SQL 数据的 SQL 语句。MODIFIES SQL
: 表明存储过程可以执行除了存储过程中不支持的 SQL 语句之外的任何 SQL 语句。
二、PROCEDURE 创建
命令行创建存储过程。通常,在命令行中可以这样执行包含存储过程 DLL 的脚本:
db2 -td@ -v -f mysprocs.db2 |
在调用包含 SQL 语句的脚本时,有以下几种不同的选项:
t
: 表明使用;
表示一行的结束。这样一来,在脚本中,一个 SQL 语句可以写成多行。v
: 打开 verbose 模式。在该模式下,脚本输出中会再次显示所有脚本命令。这样便于发现失败的命令。当脚本文件较大时,如果没有打开 verbose 模式,那么调试起来非常花时间。f
: 指定输入文件的名称。td
: 指定使用跟在这个标志后面的字符(而不是一个分号)来界定命令的结束。
三、PROCEDURE的调用
使用 call 存储过程名称 命令调用,其中参数的表达方式:
in参数,直接输入符合类型的数据;
out参数,可以用?来占位;