本文介绍了任何人都可以解释这个动态光标的行为..?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 大家好.... 使用光标时我注意到这是一个动态光标: 表描述 创建 表 #Temp(ID int ,数据 Nvarchar ( 40 )) 将 插入 #Temp 选择 1 ,' 一个' 联盟 全部 选择 3 ,' 三个 联盟 all 选择 4 ,' 四个 联盟 全部 选择 5 ,' 五个 联盟 全部 选择 6 ,' 六个 联盟 全部 选择 7 ,' Seven' Union all 选择 8 ,' 八' 联盟 全部 选择 9 ,' Nine' Union all 选择 10 ,' Ten' 游标代码: 设置 @ CurTest = 光标动态 对于 选择 ID,数据从 #Temp 打开 @CurTest 获取 来自 @ CurTest 进入 @ Id , @ Data while @@ FETCH_STATUS = 0 开始 如果 @ Id = 1 开始 打印 ' ID数据' 打印 ' - ------' 更新 #Temp set ID = 2 其中 ID = 6 将 插入 #Temp 值( 2 ,' 两个') 结束 打印 cast( @ Id as Nvarchar )+ ' ' + @ Data 获取下一步来自 @CurTest into @ Id , @ Data 结束 输出为: ID数据 - ------ 1一个 3三个 4个四个 5个 2六美元 7七美元b $ b 8八美元b $ b 9九美元b $ b 10美元b $ b 2两美元 在此输出中,我能够看到插入的数据和更新的数据....但是在Cursor语句中,如果我使用设置@CurTest =光标动态对于选择ID ,数据为m #Temp按ID排序,数据 然后我得到的输出是: ID数据 - ----- - 1一美元 3三美元b $ b 4四美元b $ b 5五美元b $ b 6美元6美元b $ b 7七美元b $ b 8八美元b $ b 9美元9 b $ b 10十 此输出我无法理解..如果我使用Order by Clause,那么我无法看到更新的行或插入的行。 .I读取Dynamic Cursor迭代原始实际数据。光标可以看到所有更改,而无需对更改进行任何特殊处理。 任何解释都有帮助... 解决方案 这可能对你有所帮助。 [ ^ Hi All.... While Using Cursor I noticed this For a Dynamic Cursor:Table DescCreate Table #Temp(ID int,Data Nvarchar(40))Insert into #TempSelect 1,'One' Union allSelect 3,'Three' Union allSelect 4,'Four' Union allSelect 5,'Five' Union allSelect 6,'Six' Union allSelect 7,'Seven' Union allSelect 8,'Eight' Union allSelect 9,'Nine' Union allSelect 10,'Ten'The Cursor Code:Set @CurTest = Cursor DynamicForSelect ID,Data From #TempOpen @CurTestFetch From @CurTest into @Id,@DataWhile @@FETCH_STATUS=0Begin if @Id=1 Begin Print 'IDData' Print'-- ------' Update #Temp set ID=2 Where ID=6 Insert into #Temp Values(2,'Two') End Print cast(@Id as Nvarchar) +''+@Data Fetch Next From @CurTest into @Id,@DataEndThe Output is:ID Data-- ------1One3Three4Four5Five2Six7Seven8Eight9Nine10Ten2TwoIn this output i am able to see the inserted Data and Updated Data.... But in the Cursor Statement if i Use Set @CurTest = Cursor DynamicForSelect ID,Data From #Temp Order by ID,DataThen the output i am Getting is:ID Data-- ------1One3Three4Four5Five6Six7Seven8Eight9Nine10TenThis Output i am not unable to understand.. if i use Order by Clause then i am not able to see the Updated rows or Inserted Rows.. i Read that Dynamic Cursor iterates over the original real data. All changes are seen by the cursor without any special handling of the changes..Any Explanation Will be Helpful... 解决方案 This may helpfull for you .http://stackoverflow.com similar Question [^] 这篇关于任何人都可以解释这个动态光标的行为..?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 08-23 22:18