2011-05-26 9 views
0

私のストアドプロシージャに少し問題があります。 カーソルを使用しているストアドプロシージャを作成しました。 カーソルからテンポラリテーブルに値を挿入するところまで、すべてのことがうまく動作します。ここ はエラーmssqlカーソルに少し問題があります。カーソル内の一時テーブルに挿入してください。

メッセージ156、レベル15、状態1、プロシージャors_DailyReportMessageStatus、ライン36 キーワードの近くに不正な構文 '' です。

、ここでは、コード

ALTER PROCEDURE [dbo].[ors_DailyReportMessageStatus] 
-- Add the parameters for the stored procedure here 
@startDate datetime, @endDate datetime 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
DECLARE @num int; 
DECLARE @stat varchar(20); 
DECLARE @statusCursor CURSOR 
SET @statusCursor = CURSOR FOR 
select count(ms.status) as message, ms.status from message_status ms JOIN [message] m on m.id=ms.message_id 
where (m.ADDED_ON >= @startDate AND m.ADDED_ON < @endDate) GROUP BY ms.status 

SET NOCOUNT ON; 
if object_id('tempdb..#tempdailystatus') is not null 
begin 
    drop table #tempdailystatus 
end 

CREATE TABLE #tempdailystatus(id int identity, total int , [status] varchar(20)); 
insert into #tempdailystatus ([status]) 
select distinct([status]) from message_status; 


open @statusCursor 
fetch next from @statusCursor into @num, @stat; 
while @@FETCH_STATUS = 0 

    begin 
    -- this is where the error is 
    insert into #tempdailystatus (total) values (@num) where id = (select id from #tempdailystatus where [status] = @stat) 
    -- this were just to see whether the cursor is ok. and it is 
    --print @stat 
    --print @num ; 
    fetch next from @statusCursor into @num,@stat 
end 

close @statusCursor 
deallocate @statusCursor 


-- Insert statements for procedure here 
-- SELECT * from #tempdailystatus 
drop table #tempdailystatus 
END 

私はおそらく何かを無視してるのですか?私は何かを忘れているようだ。

If Exists(Select 1 From #tempdailystatus where [status] = @stat) 
    Begin 
    insert into #tempdailystatus (total) Values(@num) 
    End 

は、私はあなたのロジックについていくつかの仮定をした:

insert into #tempdailystatus (total) values (@num) where id = (select id from #tempdailystatus where [status] = @stat) 

でこれを読み取るためと示唆を与える

おかげで、あなたは

+0

SELECT句の一部でない限り、INSERT文にWHERE句を使用することはできません。あなたはここで何をしようとしていますか? –

答えて

1

交換してみてください^ _ ^それを感謝.will 、それに応じて調整する必要があるかもしれません。

関連する問題