0

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

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

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

现在我有 10 个不同的日期,每次都需要通过这里才能看到结果。

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

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

4

1 回答 1

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

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

于 2013-04-01T13:50:25.547 回答