带参数的存储过程临时表

时间:2017-03-06 13:59:23

标签: sql sql-server stored-procedures temp-tables

你好,在一个存储过程中,我创建了一个temp-table,其中包含一个select,它执行一个函数来返回日期重复。<​​/ p>

我的临时表的创建如下:

float lux = event.values[0];

创建此临时表后,我使用此临时表执行查询,如下所示:

    BEGIN
        insert into #tmp_recu
        SELECT * FROM dbo.CrontabSchedule('0 0 * * *', '2017-2-1', '2017-2-28')
    END

问题是我想通过任务表中的字段(名为recurrence的字段)在我的临时表创建中重新设置'0 0 * * *',那么我怎么能这样做呢?

谢谢!

修改

实际上,在我的查询中,我想调用函数'CrontabSchedule'并在'mission'表中输入一个字段,如下所示:

Select * from mission
Cross Join #temp_recu

当我像这样调用函数时它起作用

select * from mission m
cross join select * from dbo.CronTabSchedule(mission.reccurence,'2017-1-1','2017-1-31') 

但是当我用'Mission.recurrence'(包含每个任务的重复模式)替换'0 0 * * *'时,我有一个错误:

  

无法绑定多部分标识符“Mission.recurrence”。

CrontabSchedule代码:

select * from dbo.CronTabSchedule('0 0 * * *','2017-1-1','2017-1-31') 

该函数返回一个表,其中一列名为“Occurence”,并包含à日期列表。

1 个答案:

答案 0 :(得分:1)

这里的模糊问题,但我假设CronTabSchedule必须是一个表值函数(希望是内联版本,但这是另一个主题)。如果我是正确的,你可以很容易地使用CROSS APPLY。

select * 
from mission m
cross apply dbo.CronTabSchedule(m.reccurence,'2017-1-1','2017-1-31') cts