最初のネストされたカーソル 'uncalcdays' がデータを返しません。最初の (ネストされていない) カーソル「codes」は正しいデータを返し、このデータを変数 @codes に正しく渡しています。
uncalcdays から sql を切り取り、別のクエリ ウィンドウで実行すると、データが返されます。'codes' と 'uncalcday' から SQL を切り取り、適切な変数を作成して別のクエリ ウィンドウで実行すると、どちらも正しいデータを返します。
これは私の頭をやっています!私が間違っていることは明らかですか..?
計画は、子データを持たない最初のマスター レコード (つまり、子レコードを持たない最小 ID のマスター レコード) を特定する必要があるということです。
Rgdsデイブ
SET NOCOUNT ON;
declare @code nvarchar(10)
declare @id numeric
declare @val numeric
declare @total numeric
declare @count numeric
declare @avg numeric
declare @fetch_codes int
declare @fetch_uncalcdays int
declare @fetch_twentyvals int
-- get a list of codes
declare codes cursor for
select distinct code from dbo.EOD_Data;
-- get a list of the days that are unprocessed
declare uncalcdays cursor for
select d.id
from dbo.EOD_Data d
left outer join dbo.EOD_Computed_Stats cs
on d.id = cs.EOD_Data_Id
where cs.SMA_20D is null
and d.CODE = @code
order by d.id asc;
-- get the last 20d data for a given stock code
declare twentyvals cursor for
select top(20) d.id
from dbo.EOD_Data d
where d.id <= @id
and d.code = @code
order by d.id desc;
-- loop through stock codes
open codes
fetch next from codes
into @code
select @fetch_codes = @@FETCH_STATUS
while @fetch_codes = 0
begin
open uncalcdays
fetch next from uncalcdays
into @id
select @fetch_uncalcdays = @@FETCH_STATUS
while @fetch_uncalcdays = 0
begin
-- loop through the twenty most recent close prices and calc average
open twentyvals
fetch next from twentyvals
into @val
select @fetch_twentyvals = @@FETCH_STATUS
while @fetch_twentyvals = 0
begin
...stuff
fetch next from uncalcdays
into @id
select @fetch_uncalcdays = @@FETCH_STATUS
end
close uncalcdays
deallocate uncaldays
fetch next from codes
into @code
select @fetch_codes = @@FETCH_STATUS
end
close codes
deallocate codes
終わり