Npgsql 按名称将参数传递给存储的函数

Posted

技术标签:

【中文标题】Npgsql 按名称将参数传递给存储的函数【英文标题】:Npgsql pass parameters by name to a stored function 【发布时间】:2010-03-04 20:28:49 【问题描述】:

我正在使用我正在转换为使用 .NET 的 Pgsql 的代码。我想调用具有多个参数的存储函数,但我想按名称绑定参数,如下所示:

NpgsqlCommand command = new NpgsqlCommand("\"StoredFunction\"", _Connection)
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("param2", value2);
command.PArameters.Add("param1", value1);

到目前为止,尝试执行此操作以查找参数类型与我将参数添加到集合中的顺序匹配的函数,而不是按名称。

Npgsql 是否可以通过名称将参数绑定到存储的函数?

【问题讨论】:

【参考方案1】:

目前 Npgsql 不支持按名称传递参数。虽然它支持按名称接收参数值。

您介意填写一份关于此的错误报告吗?所以我们可以跟踪和实施它。

【讨论】:

无法报告此问题。我已在网站上注册,但报告错误不起作用。 您是否介意再次尝试填写错误报告。提前致谢。【参考方案2】:

很遗憾,它不适用于存储过程 (CommandType.StoredProcedure)。

它使用 SQL 文本命令 (CommandType.Text)。 你可以使用:paramname,而且我认为在最新版本中你可以使用parameters.addwithvalue(":paramname", param)。

您还可以将@paramname 与最新版本(如MS Sql Server)一起使用。

阅读this manual 的“在查询中使用参数”部分,了解您最初的问题的答案 - 但请记住我上面所说的内容,让您的生活更轻松。

【讨论】:

使用 2013 年第一季度可用的 Npgsql 版本进行测试,我发现当客户端命令处于 CommandType.StoredProcedure 模式时,提供程序似乎只支持将位置模式参数传递给服务器上的函数。将参数添加到 Command 的 Parameters 集合的顺序就是提供它们的顺序。 我没有使用 StoredProcedure 进行测试,但它确实适用于 Text。 手册链接失效了,你知道它移到哪里了吗?

以上是关于Npgsql 按名称将参数传递给存储的函数的主要内容,如果未能解决你的问题,请参考以下文章

当我将参数传递给类构造函数时,是否需要其他名称相同或自已的函数可用?

参数传递(值传递与引用传递)

C++ 将列表作为参数传递给函数

将参数传递给函数

将无效参数传递给认为无效参数致命的函数

PyQt4 将转换矩阵作为参数传递给构造函数