当前位置: 代码迷 >> Sql Server >> 从游标为变量赋值,这两种写法同样吗
  详细解决方案

从游标为变量赋值,这两种写法同样吗

热度:41   发布时间:2016-04-24 10:30:55.0
从游标为变量赋值,这两种写法一样吗?
本帖最后由 zyaim 于 2014-06-23 09:52:46 编辑

--主流写法
 DECLARE TempCursor CURSOR FOR 
 SELECT FCheck1,FProdOrderGUID,ISNULL(FNumber,0) FROM table1
 FOR READ ONLY
OPEN TempCursor
FETCH NEXT FROM TempCursor INTO @FTrigFlag,@FProdOrderGUID,@FNumber
WHILE @@FETCH_STATUS=0
BEGIN
--……
END


--自己创意 
 DECLARE TempCursor CURSOR FOR 
 SELECT @FTrigFlag=FCheck1,@FProdOrderGUID=FProdOrderGUID,@FNumber=ISNULL(FNumber,0) FROM table1
 FOR READ ONLY
OPEN TempCursor
FETCH NEXT FROM TempCursor
WHILE @@FETCH_STATUS=0
BEGIN
--……
END

------解决方案--------------------
引用:
这样不行的,必须放到游标循环的里面才可以
经实测,确实不行,连语法检查都不能通过。
那我想请问,有没有办法不要用FETCH NEXT FROM TempCursor INTO @FTrigFlag,@FProdOrderGUID,@FNumber这种文学式的赋值方法,这种按变量的排列顺序去赋值,变量名一多,就眼花了,那种直接用等号赋值的办法比较清晰。有良好的编程习惯,其实常规写法是比较规范的。因为你在定义游标赋值的时候,是写出了所有的列名,那么在循环取游标的数据时,一一对应的将列写入变量是没问题的。你那种创新的写法行不通,是因为在定义游标的同时会赋值,你此时再给变量赋值就会出问题的

当然了,也很肯定你这种深究的态度。你这种创新的想法很不错,虽然不成功。说明你很有心
  相关解决方案