欢迎光临

木子屋

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

作者: dnawo

日期: 2008-08-01 01:16 AM

分类: 服务器

内容: 我们通常使用游标的形式如下：
复制内容到剪贴板 程序代码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)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.579 ms

返回

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

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.579 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.610 ms

返回