在SQL Server 2008中使用sets作为函数/ ​​sproc的参数?

时间:2009-12-28 11:08:03

标签: sql sql-server sql-server-2008 stored-procedures views

是否可以使用一个集合,例如(1,2,3,4,5),作为SQL Server 2008中Sproc,函数或视图的参数?

对于这个SLQ,我应该使用Sproc,function或View?

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

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

您可能想看看Table Valued Parameters

答案 1 :(得分:2)

答案 2 :(得分:1)

这里有几种技术来查看表值参数。

您可以继续使用逗号分隔值,但您需要创建一个函数来拆分逗号分隔值。 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