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";
$$;