sql - 获取 SQL Server 游标中的多个值

标签 sql sql-server tsql database-cursor

我有一个游标,其中包含它带回的行中的几列,我想立即处理这些列。我注意到我看到的关于如何使用游标的大多数示例都显示它们一次将游标中的特定列分配给标量值,然后移动到下一行,

例如

OPEN db_cursor  
FETCH NEXT FROM db_cursor INTO @name  

WHILE @@FETCH_STATUS = 0  
BEGIN  
       --Do Stuff with @name scalar value, then get next row from cursor

       FETCH NEXT FROM db_cursor INTO @name  
END

我想知道是否可以执行如下操作:

    OPEN db_cursor  
    FETCH NEXT FROM db_cursor; 

    WHILE @@FETCH_STATUS = 0  
    BEGIN  
           SET @myName = db_cursor.name;
           SET @myAge = db_cursor.age;
           SET @myFavoriteColor = db_cursor.favoriteColor;
           --Do stuff with scalar values

           FETCH NEXT FROM db_cursor; 
    END

我们始终感谢您的帮助。

最佳答案

这应该有效:

DECLARE db_cursor CURSOR FOR SELECT name, age, color FROM table; 
DECLARE @myName VARCHAR(256);
DECLARE @myAge INT;
DECLARE @myFavoriteColor VARCHAR(40);
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @myName, @myAge, @myFavoriteColor;
WHILE @@FETCH_STATUS = 0  
BEGIN  

       --Do stuff with scalar values

       FETCH NEXT FROM db_cursor INTO @myName, @myAge, @myFavoriteColor;
END;
CLOSE db_cursor;
DEALLOCATE db_cursor;

关于sql - 获取 SQL Server 游标中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974981/

相关文章:

sql - 事务处理 SQL : insert into xyz ( select * from abc )

sql - 在 Informix 中将 DATETIME 转换为 Unix 纪元

sql-server - 在 n 层应用程序 : Presentation Layer, 域或数据库中的何处设置 UTC 日期时间值?

sql - 限制随机选择中的记录

sql - 使用 SQL Server DTS 包在目标表中有条件地插入/更新行

sql-server - 数据库排序规则更改问题 (SQL Server 2008)

sql-server - 递归 CTE 如何消除重复项?

mysql - sql根据其他表选择时间戳之前的最新10个条目

php - 如何按工作时间选择来电、接听、优惠、费率等?

c# - SQL 数据读取器 : Invalid attempt to read when no data is present