Firebird数据库
Firebird执行存储过程语句EXECUTE PROCEDURE
2017-05-24 17:51:42

这里为在OA系统中执行存储过程提供一些方法

EXECUTE PROCEDURE语句

作用:执行一个存储过程
用于: DSQL, ESQL, PSQL
语法:
EXECUTE PROCEDURE procname
[<inparam> [, <inparam> ...]] | [(<inparam> [, <inparam> ...])]
[RETURNING_VALUES <outvar> [, <outvar> ...] | (<outvar> [, <outvar> ...])]
<outvar> ::= [:]varname

 

备注:注意,在同Dmitry Y交流沟通后,我增加为返回参数增加了一个无圆括号的返回参数

 

表6.16 EXECUTE PROCEDURE语句的参数

参数    描述
procname    存储过程名称
inparam    表达式计算为声明的输入参数的数据类型
varname    PSQL变量用于接收返回值

 

描述:执行一个可执行的存储过程,可以带上一个或多个被这个存储过程定义的输入参数,返回一个输出值的行集,如果它们被这个存储过程定义。

 

可执行的存储过程
       EXECUTE PROCEDURE语句最常用于调用是一些被写来在服务器端执行一些数据修改任务风格的存储过程,且在代码中不包含任何SUSPEND语句。它们能被设计为返回一个结果集,对于另一个通常只传递一行,通过RETURNING_VALUES()的一个集合变量到另一个调用它的存储过程当在DSQL中调用EXECUTE PROCEDURE时,客户端接口通常有API封装能取得输出值到一个单行的缓存中。

       调用另一种类型的存储过程—一个“可选择的”—可以使用EXECUTE PROCEDURE,但是它只返回输出集的第一行,它几乎可以肯定地设计为多行。可选择的存储过程被设计成由一个SELECT语句调用,产生的输出行为就像一个虚拟表。

 

备注
• 在 PSQL 和 DSQL 中, 输入参数可以是任何解析为预期类型的表达式
•虽然在存储过程的名称之后不需要括号来括起输入参数,为了良好的内部管理, 建议使用它们。
• 如果在存储过程中定义了输出参数, 则可以使用 RETURNING_VALUES 子句在 PSQL 中, 将它们值赋给到预先声明的变量列表中(按顺序、数据类型和数字一致定义的输出参数)。
• RETURNING_VALUES 的列表可以选择用括号括起来, 建议使用它们。
• 当 DSQL 应用程序使用Firebird的API或某种形式的封装来调用EXECUTE PROCEDURE时, 一个缓冲区被准备用于接收输出行且 RETURNING_VALUES 子句不被使用。

 

例子:

在PSQL中带冒号选项且不带分号选项:

EXECUTE PROCEDURE MakeFullName
:FirstName, :MiddleName, :LastName
RETURNING_VALUES :FullName;

 

在Firebird的命令行工具isql中带字符参数和括号:

EXECUTE PROCEDURE MakeFullName ('J', 'Edgar', 'Hoover');

注:在isql中RETURNING_VALUES没有被使用。任何输出参数能被应用程序捕捉并自动显示.

 

一个PSQL例子带有表达式参数和括号选项

EXECUTE PROCEDURE MakeFullName
('Mr./Mrs. ' || FirstName, MiddleName, upper(LastName))
RETURNING_VALUES (FullName);