存储过程、NPGSQL 和返回记录集

问题描述 投票:0回答:1

PostgreSQL 数据库的 Npgsql dotnet 客户端接口版本 7.0 引入了一项重大更改,其中 CommandType.StoredProcedure 现在调用 PostgreSQL PROCEDURE 而不是 FUNCTION。

我们的应用程序使用与多个数据库供应商合作的通用代码。通用代码使用 DbCommand、DbConnection 和 DbProviderFactories 等对象。我们的供应商独立应用程序中的每个数据库调用都是对存储过程的调用。大约 1/2 的存储过程从 SELECT 语句返回结果作为记录集。

我知道 Npgsql 客户端可能会被迫回到旧版行为,即调用 PostgreSQL 函数而不是过程。请参阅:存储函数和过程

但是,从前进的角度来看,有没有办法(计划是什么)让 PostgreSQL PROCEDURE 返回记录集 - 与其他数据库供应商一致?

OUT 参数是否有一些语法变体可以返回 PROCEDURE 中的记录集?

这是一个示例过程,它不通过 Npgsql 返回任何数据...

CREATE OR REPLACE PROCEDURE public."AttributeSelect"()
LANGUAGE 'sql'
AS $$
   SELECT "Id" FROM "Attribute";
$$;
.net postgresql stored-procedures npgsql recordset
1个回答
0
投票

,目前(Postgres 16)无法从 PROCEDURE

 返回 
set。您可以使用
OUT
INOUT
参数返回单行。参见:

要返回一组,请使用

FUNCTION
。所谓的“设置返回函数”,又名“表函数”。相关:

© www.soinside.com 2019 - 2024. All rights reserved.