【问题标题】:Npgsql pass parameters by name to a stored functionNpgsql 按名称将参数传递给存储的函数
【发布时间】: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 是否可以通过名称将参数绑定到存储的函数?

【问题讨论】:

    标签: c# npgsql stored-functions postgresql


    【解决方案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。
    • 手册链接失效了,你知道它移到哪里了吗?
    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多