【发布时间】:2015-11-20 23:22:30
【问题描述】:
首先感谢您的阅读。我遇到了无法解决的情况。
我创建了一个存储过程,它创建了一个包含两个日期之间天数的临时表。
示例:如果我将'2015-07-20' 和'2015-07-25' 作为参数传递给存储过程,它将创建一个从2015 年7 月20 日到25 日有5 天的表。
我需要做的是在连接情况下使用这个临时表,比如这个查询。
SELECT *
FROM control
INNER JOIN
(my table returned from sp => exec calendario_dias ... ) ON dia = cta_dia
这是存储过程代码:
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[calendario_dias]
(@fecha_ini date,
@fecha_fin date)
AS
BEGIN
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID('#dias_calendar') AND type in (N'U'))
DROP TABLE [dbo].#dias_calendar
CREATE TABLE #dias_calendar(dia date)
WHILE @fecha_ini <= @fecha_fin
BEGIN
INSERT INTO #dias_calendar (dia)
SELECT @fecha_ini
SET @fecha_ini = CONVERT(date, dateadd(day, 1, @fecha_ini))
END
SELECT dia
FROM #dias_calendar
END
【问题讨论】:
-
您是否考虑过使用tally table 代替临时表
标签: sql sql-server function stored-procedures inner-join