こんにちはストアドプロシージャでは、私は、テンポラリテーブルを作成して、選択した日付を繰り返し返す関数を実行します。パラメータ付きのストアドprocテンポラリテーブル
私の一時テーブルの作成は次のようになります。この一時テーブルを作成した後
BEGIN
insert into #tmp_recu
SELECT * FROM dbo.CrontabSchedule('0 0 * * *', '2017-2-1', '2017-2-28')
END
、私はこのように、この一時テーブルを使用してクエリを実行します。
Select * from mission
Cross Join #temp_recu
問題は私ですミッションテーブルのフィールド(再帰という名前のフィールド)で私の一時テーブルの作成に '0 0 * * *'を書き換えたいのですが、どうすればいいのですか?
ありがとうございます!
select * from mission m
cross join select * from dbo.CronTabSchedule(mission.reccurence,'2017-1-1','2017-1-31')
それは動作します:
EDIT
実は、私のクエリで、私はこのような使命 'テーブルからパラメータのフィールドを置く関数「CrontabSchedule」と呼びたいと思います私はこの
select * from dbo.CronTabSchedule('0 0 * * *','2017-1-1','2017-1-31')
のような関数を呼び出したが、私は(各ミッションの定期的なパターンが含まれている)「Mission.recurrence」で、「0 0 * * *」を置換するとき、私はエラーを持っている:
マルチパート識別子「Mission.recurrence」はバインドできませんでした。
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]
関数 '出現' という名前の列を持つテーブルを返すと日付のリストAが含まれています。
希望するフィールドのみを選択して選択しないでください。または私は何かを逃したか? –
テーブル値関数をお探しですか? –
完璧な質問をする方法を知っているリンクを参照してください:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar