如何在Firebird 2.5中选择一个过程

Emi*_*mil 8 firebird select stored-procedures firebird2.5

我正在使用Firebird Embedded v2.5.如何在查询(SELECT)中使用程序?

我的程序:

SET TERM ^ ;
CREATE PROCEDURE FN_TEST( Y INTEGER )
RETURNS( X INTEGER)
AS
BEGIN
X = Y + 1;
END^
SET TERM ; ^
Run Code Online (Sandbox Code Playgroud)

我想列出一些由某些过程修改的表的字段,如下所示:

SELECT some_table_field_1, 
       fn_test( 4 ) AS zzz, 
       some_table_field_2,
       fn_test( some_table_field_2 ) AS field_2_modified
FROM   tb_test
Run Code Online (Sandbox Code Playgroud)

需要结果(表):

some_table_field_1     zzz         some_table_field_2      field_2_modified
---------------------------------------------------------------------------
aaa                    5           14                      15
bbb                    5           23                      24
www                    5           75                      76
Run Code Online (Sandbox Code Playgroud)

这个东西在PostgreSQL中运行正常,但我不知道如何在Firebird中这样做.

小智 5

SELECT some_table_field_1, 
   (select X from fn_test( 4 )) AS zzz, 
   some_table_field_2,
   (select X from fn_test( some_table_field_2 )) AS field_2_modified
FROM   tb_test
Run Code Online (Sandbox Code Playgroud)


Jus*_*tMe 1

您无法调用 Firebird 选择列表中的存储过程。您必须编写具有所需结果的可选过程,或者编写一个 UDF 函数来执行fn_test过程中的操作。

对于您的情况,最简单的方法是:

SELECT some_table_field_1, 
       5 AS zzz, 
       some_table_field_2,
       ( some_table_field_2 + 1) AS field_2_modified
FROM   tb_test
Run Code Online (Sandbox Code Playgroud)