【问题标题】:How do I specify parameter "output only" direction in a stored procedure in MS SQL Server 2012?如何在 MS SQL Server 2012 的存储过程中指定参数“仅输出”方向?
【发布时间】:2019-04-22 00:36:51
【问题描述】:

情况:我正在使用 Allen-Bradley (Rockwell) 软件包,称为 FactoryTalk Transaction Manager,它允许 PLC 使用 SQL Server 的强大功能来做事。

使用 SQL Server 2012,我需要在存储过程中指定参数的方向,我错误地认为它就像一个简单的

@QuarantineReason nvarchar(256) OUTPUT

但是,当在 SSMS 的对象资源管理器中查看时,存储过程参数的属性会显示

@QuarantineReason (nvarchar(256), Input/Output, No default)

为了大大简化我的生活,我希望参数只是一个输出,因为这样可以节省我在 Allen-Bradley 软件中绑定事物的输入端。

我在网上找到了几个 MS 文档资源,但它们似乎都将 C# 指定为代码库,这让我感到困惑。

SqlParameter.Direction Property

Input, Output and Input/Output SqlParameter Behavior Explained

Using a Stored Procedure with Output Parameters

【问题讨论】:

  • AFAIK 没有仅输出选项
  • T-SQL 中没有只输出参数这样的东西;始终可以传递输入值,并且该值将可用于代码。将此类参数视为“仅输出”的客户端代码在调用过程时根本不指定值。当然,除非它不知道这个 T-SQL 怪癖,就像这里的情况一样。考虑给参数一个显式但未使用的虚拟默认值 (@QuarantineReason NVARCHAR(256) OUTPUT = NULL);软件可能会检测到这一点并允许您省略输入绑定。
  • @JeroenMostert 请回答您的评论,我将接受它作为最相关的答案。它非常清楚,涉及客户端软件和所有内容。

标签: sql sql-server tsql sql-server-2012


【解决方案1】:

据我所知,你不能在MSSQL中这样做,你必须在调用SP时指定方向(以及在SP本身的参数声明中) .

您在 C# 示例中找到的文档用于从 .NET C# 代码调用 MSSQL SP。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多