木子屋 Dnawo's BLOG

在游标中使用动态SQL(SQL Server2000)

👤 dnawo 📅 2008-08-01 👁 4677 👍 0 💬 0 🔄 来源:本站原创
我们通常使用游标的形式如下:

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 rs


INTO后边可跟随多个变量,msdn中说明如下:
允许将提取操作的列数据放到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列相关联。各变量的数据类型必须与相应的结果集列的数据类型匹配,或是结果集列数据类型所支持的隐式转换。变量的数目必须与游标选择列表中的列数一致。

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 SQL Server2000存储过程调试 下一篇 → 自学考试简介