这并不是说我在执行包含在存储过程中的游标时遇到问题。但我想找到更有效的方法来实现同样的目标。
就这样吧。
存储过程:(RawFeed.sql
每 5 分钟运行一次)
Set @GetATM = Cursor For
Select DeviceCode,ReceivedOn
From RawStatusFeed
Where CRWR=2 AND Processed=0
Order By ReceivedOn Desc
Open @GetATM
Fetch Next
From @GetATM Into @ATM,@ReceivedOn
While @@FETCH_STATUS = 0
Begin
Set @RawFeed=@ATM+' '+Convert(VarChar,@ReceivedOn,121)+' '+'002307'+' '+@ATM+' : Card Reader/Writer - FAULTY '
Exec usp_pushRawDataAndProcess 1,@RawFeed
Fetch Next
From @GetATM Into @ATM,@ReceivedOn
End
Set @GetATM = Cursor For
Select DeviceCode,ReceivedOn
From RawStatusFeed
Where CRWR=0 AND Processed=0
Order By ReceivedOn Desc
Open @GetATM
Fetch Next
From @GetATM Into @ATM,@ReceivedOn
While @@FETCH_STATUS = 0
Begin
Set @RawFeed=@ATM+' '+Convert(Varchar,@ReceivedOn,121)+' '+'002222'+' '+@ATM+' : Card Reader/Writer - OK '
Exec usp_pushRawDataAndProcess 1,@RawFeed
Fetch Next
From @GetATM Into @ATM,@ReceivedOn
End
同样,我还有 10 条SET
语句在条件参数和包含在变量中WHERE
的字符串上有所不同。@RawFeed
对于我得到的每一行,我在该特定行上执行另一个存储过程。
我的问题是
有没有更好的方法可以在不使用游标的情况下实现相同的目标?
变量@RawFeed
包含以下string
是usp_pushRawDataAndProcess
存储过程的输入。现在这将分割整个字符串并INSERT,UPDATE,DELETE
在某些表上执行一些操作。
我们不能处理超过 1 个字符串usp_pushRawDataAndProcess
NMAAO226 2012-09-22 16:10:06.123 002073 NMAAO226 : Journal Printer - OK
WMUAO485 2012-09-22 16:10:06.123 002222 WMUAO485 : Card Reader/Writer - OK