带参数的临时存储过程 table

Stored proc temporary table with parameters

你好,在一个存储过程中,我创建了一个临时 table 填充了一个 select 来执行函数 return 日期重复。

我的临时文件 table 的创建如下所示:

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

创建此临时文件后-table,我使用此临时文件 table 执行查询,如下所示:

Select * from mission
Cross Join #temp_recu

问题是我想用任务 table 中的一个字段(字段名为 recurrence)替换我临时 table 创建的“0 0 * * *”,那么如何我可以那样做吗?

谢谢!

编辑

实际上,在我的查询中,我想调用函数 'CrontabSchedule' 并在参数中放入来自 'mission' table 的字段,如下所示:

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

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

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

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

The multi-part identifier "Mission.recurrence" could not be bound.

CrontabSchedule代码:

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[CrontabSchedule](@Expression [nvarchar](100), @Start[datetime], @End [datetime])
RETURNS  TABLE (
[Occurrence] [datetime] NULL
) WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [NCrontabSQL].[NContab.SQL.SqlCrontab].[GetOccurrences]

函数 return 具有一个名为 'Occurence' 的列的 table 并且包含一个日期列表。

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

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