【问题标题】:Passing an array of values to a stored procedure in SQL 2005 [duplicate]将值数组传递给 SQL 2005 中的存储过程 [重复]
【发布时间】:2010-11-03 00:32:14
【问题描述】:

可能重复:
T-SQL stored procedure that accepts multiple Id values

T-SQL 是否将数组值用作存储过程的参数?如果是这样,如何实现。

【问题讨论】:

标签: sql-server sql-server-2005 tsql


【解决方案1】:

SQL Server 2005 中的 T-SQL 方言既不支持数组,也不支持任何类似的东西,所以它们必须是 emulated。但是,SQL Server 2008 支持table-valued parameters,可以用作数组。

【讨论】:

    【解决方案2】:

    我更喜欢使用逗号(或其他特殊字符)分隔的列表,我将在我的存储过程中首先拆分/分解它。然后,这将为我提供一个可以使用的值表,然后我可以在以后的存储过程中加入或执行其他操作。

    您也可以考虑传入表格参数,但我更喜欢我的方式,只是作为个人喜好。

    【讨论】:

    • 我的错,表值参数是在 2008 年引入的,而不是 2005 年。
    【解决方案3】:

    它通常是通过 CSV 实现的,这显然是有限的。使用 SQL 2005,Xml 参数可能更适合,而序列化程序可能更适合您的需求。

    可能还有更多,如果我想到了,我会回来的。

    【讨论】:

      【解决方案4】:

      sqlserver 中没有数组。但是,你想做什么?作为参数的值将用于什么?您可以向 sql 发送一个“数组”,但 sp 必须是动态的。

      【讨论】:

      • 有很多方法可以做到这一点,不需要你写“动态SQL”
      • Sql 确实支持数组。事实上,数组是它的核心。 Sql 只是调用数组表。
      猜你喜欢
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 1970-01-01
      • 2016-12-31
      相关资源
      最近更新 更多