日期:2014-05-18  浏览次数:20474 次

问一个关于 sql循环判断的问题
首先,我是要从外边的csv文件中 拿数据,所以就使用openrowset来读取,
然后放到一个表变量里面,如 declare @table1 table(id,title,author)
然后想利用循环,遍历这个表,每次拿取表变量的每一条记录,这些记录里面的三个参数(id,title,author)将 作为 我要使用的存储过程的参数 
如 exec proc_xxx存储过程 id,title,author

问题是我应该怎么判断啥时候读完这个表,如果这个表变量里面没有id这个字段的,那我又应该怎么判断啥时候结束这个循环。


------解决方案--------------------
SQL code
DECLARE @id int;

DECLARE @title VARCHAR(256),@author VARCHAR(128);

SET @id=(SELECT TOP 1 id FROM @table1 ORDER BY id);

WHILE @id IS NOT NULL
BEGIN
     SELECT
         @title=title,
         @author=author
     FROM @table1 
     WHERE id=@id;

     EXEC  proc_xxx @id,@title,@author;

     SET @id=(SELECT TOP 1 id FROM @table1 WHERE id>@id ORDER BY id);
END

------解决方案--------------------
探讨
那怎么使用游标啊

------解决方案--------------------
探讨
引用:
那怎么使用游标啊


SQL code
--游标的基本写法
declare @id int,@name varchar(20);
declare cur cursor fast_forward for
select id,name from a;
open cur;
fetch next from cur into @id,@name;
while @@fetch_status=0
begin
--做你要做的事
fetch next from cur into @id,@name;
end
close cur;
deallocate cur;




SQL codeSQL游标原理和使用方法
http://t…