我有一个很大的SQL查询,我想使用该查询提取一些数据
declare @Period VARCHAR(10) = 'MTD'
declare @Date DATETIME = '2011-08-31'
我有一个很大的select statement
,我在上面传递参数并执行输出。
现在我有10个不同的日期,每次我都需要在这里查看结果。
如何将这些日期传递给上述参数declare @Date DATETIME
如何对其进行硬编码?
所以我想要的输出将是那些选定的日期,给我提示至少3个日期?
答案 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
传递,例如。