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

我们通常使用游标的形式如下:

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中说明如下:
允许将提取操作的列数据放到局部变量中。列表中的各个变量从左到右与游标结果集中的相应列相关联。各变量的数据类型必须与相应的结果集列的数据类型匹配,或是结果集列数据类型所支持的隐式转换。变量的数目必须与游标选择列表中的列数一致。

上一篇: SQL Server2000存储过程调试
下一篇: 自学考试简介
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 4165
发表评论
登录后再发表评论!