--主流写法
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这种文学式的赋值方法,这种按变量的排列顺序去赋值,变量名一多,就眼花了,那种直接用等号赋值的办法比较清晰。有良好的编程习惯,其实常规写法是比较规范的。因为你在定义游标赋值的时候,是写出了所有的列名,那么在循环取游标的数据时,一一对应的将列写入变量是没问题的。你那种创新的写法行不通,是因为在定义游标的同时会赋值,你此时再给变量赋值就会出问题的
当然了,也很肯定你这种深究的态度。你这种创新的想法很不错,虽然不成功。说明你很有心