【发布时间】:2012-09-29 07:50:43
【问题描述】:
我的场景有点不同。我在存储过程中所做的是
使用“光标”创建临时表并在其中插入行
Create Table #_tempRawFeed
(
Code Int Identity,
RawFeed VarChar(Max)
)
使用游标在临时表中插入数据
Set @GetATM = Cursor Local Forward_Only Static For
Select DeviceCode,ReceivedOn
From RawStatusFeed
Where C1BL=1 AND Processed=0
Order By ReceivedOn Desc
Open @GetATM
Fetch Next
From @GetATM Into @ATM_ID,@Received_On
While @@FETCH_STATUS = 0
Begin
Set @Raw_Feed=@ATM_ID+' '+Convert(VarChar,@Received_On,121)+' '+'002333'+' '+@ATM_ID+' : Bills - Cassette Type 1 - LOW '
Insert Into #_tempRawFeed(RawFeed) Values(@Raw_Feed)
Fetch Next
From @GetATM Into @ATM_ID,@Received_On
End
现在必须使用另一个光标处理临时表中的每一行
DECLARE @RawFeed VarChar(Max)
DECLARE Push_Data CURSOR FORWARD_ONLY LOCAL STATIC
FOR SELECT RawFeed
FROM #_tempRawFeed
OPEN Push_Data
FETCH NEXT FROM Push_Data INTO @RawFeed
WHILE @@FETCH_STATUS = 0
BEGIN
/*
What Should i write here to retrieve each row one at a time ??
One Row should get stored in Variable..in next iteration previous value should get deleted.
*/
FETCH NEXT FROM Push_Data INTO @RawFeed
END
CLOSE Push_Data
DEALLOCATE Push_Data
Drop Table #_tempRawFeed
我应该在 BEGIN 中写什么来一次检索每一行? 一行应该存储在变量中。在下一次迭代中,前一个值应该被删除。
【问题讨论】:
-
“但问题是它无法正常工作”是什么意思。它做错了什么?
-
在开始迭代之前,您是否检查过
#_tempRawFeed表中确实存在行?如果表中没有行,则无法迭代任何内容... -
“我的场景有点不同”,有什么不同?可能是另一个问题?然后发布该问题的链接。
-
临时表包含数据
-
向我们展示如何将数据放入临时表中
标签: sql sql-server cursor