DECLARE @id int
DECLARE rs CURSOR FOR Select top 10 id From Union_User
OPEN rs
FETCH NEXT FROM rs INTO @id
WHILE @@fetch_status=0 BEGIN
print @id
FETCH NEXT FROM rs INTO @id
END
CLOSE rs
DEALLOCATE rs即结果集部分是固定的,假如我们需要可以任意的修改表名称呢?即要在在游标中使用动态SQL,只需稍加修改即可:
DECLARE @id int
DECLARE @strSQL nvarchar(300)
DECLARE @tableName nvarchar(100)
SET @tableName = N'Admin'
SET @strSQL = N'DECLARE rs CURSOR FOR Select top 10 id From ' + @tableName
EXEC SP_EXECUTESQL @strSQL
OPEN rs
FETCH NEXT FROM rs INTO @id
WHILE @@fetch_status=0 BEGIN
print @id
FETCH NEXT FROM rs INTO @id
END
CLOSE rs
DEALLOCATE rsINTO后边可跟随多个变量,msdn中说明如下:
允许将提取操作的列数据放到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列相关联。各变量的数据类型必须与相应的结果集列的数据类型匹配,或是结果集列数据类型所支持的隐式转换。变量的数目必须与游标选择列表中的列数一致。
评论(0)
暂无评论。