如何将多个值作为参数传递给sql语句?

时间:2013-04-01 12:14:40

标签: sql sql-server-2008 tsql select stored-procedures

我有一个很大的SQL查询,我想使用该查询提取一些数据

declare @Period VARCHAR(10)  = 'MTD'
declare @Date DATETIME = '2011-08-31'

我有一个很大的select statement,我在上面传递参数并执行输出。

现在我有10个不同的日期,每次我都需要在这里查看结果。

如何将这些日期传递给上述参数declare @Date DATETIME如何对其进行硬编码?

所以我想要的输出将是那些选定的日期,给我提示至少3个日期?

1 个答案:

答案 0 :(得分:6)

使用表值参数。首先,创建一个类型:

CREATE TYPE dbo.Dates AS TABLE(d DATE);

现在,您的存储过程可以将此类型作为参数:

CREATE PROCEDURE dbo.whatever
  @d dbo.Dates READONLY
AS
BEGIN
  SET NOCOUNT ON;

  SELECT t.columns
    FROM dbo.tableName AS t
    INNER JOIN @d AS d
    ON t.[date] = d.d;
END
GO

然后,从您的应用程序中,您可以将此参数作为DataTable传递,例如。