在 SQL Server 2008 中使用集合作为函数/存储过程的参数?
Posted
技术标签:
【中文标题】在 SQL Server 2008 中使用集合作为函数/存储过程的参数?【英文标题】:Using sets as inparameters to function/sproc in SQL Server 2008? 【发布时间】:2009-12-28 11:08:03 【问题描述】:是否可以在 SQL Server 2008 中使用一个集合,例如 (1, 2, 3, 4, 5) 作为 Sproc、函数或视图的参数?
对于这个 SLQ,我应该使用 Sproc、函数还是视图?
WITH Scores AS(
SELECT
ItemId, SUM(Score) AS Score
FROM [Presenta].[presenta].[LpivScores]
WHERE
// HERE I want (1, 2, 3, 4, 5) to be the inparameter, like @inParam
ListPropertyItemId IN (1, 2, 3, 4, 5)
GROUP BY
ItemId
)
-- I want this to be returned
SELECT
i.Id,
s.Score
FROM
Scores s,
Items i
WHERE
s.ItemId = i.Id
非常感谢任何帮助!
【问题讨论】:
【参考方案1】:你可能想看看Table Valued Parameters。
【讨论】:
【参考方案2】:请看:
T-SQL stored procedure that accepts multiple Id values Passing array as Parameter to SQL 2005 stored procedure在 SQL Server 2008 中,您可以使用table valued parameters。
【讨论】:
【参考方案3】:这里还有一些技术可以查看分开的表值参数。
您可以继续使用逗号分隔值,但您需要创建一个函数来拆分这些逗号分隔值。 http://vyaskn.tripod.com/passing_arrays_to_stored_procedures.htm
其他方法是使用 XML 参数。 http://weblogs.asp.net/jgalloway/archive/2007/02/16/passing-lists-to-sql-server-2005-with-xml-parameters.aspx
【讨论】:
以上是关于在 SQL Server 2008 中使用集合作为函数/存储过程的参数?的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 2008 中执行 while 循环
在 SQL Server 2008 的拆分函数中使用连接表列
使用 SQL Server 2008 在 WHERE 子句中使用 SUBSTRING 函数 [重复]
如何使用 C# 可靠地确定安装了 SQL Server 2008 的哪些组件?