如何访问游标列没有FETCH INTO ..(How to Access Cursor Column

2019-08-01 16:36发布

我使用SQL Server构建的存储过程,而我使用的游标遍历一个select语句

我定义光标如下:

DECLARE @c_col1 varchar(max);
DECLARE @c_col2 varchar(max);

DECLARE c as CURSOR FOR 
SELECT col1, col2 
FROM table;

OPEN c;
FETCH NEXT FROM c INTO
@c_col1, @c_col2;

SELECT @c_col1, @c_col2;

是否有访问光标列,而不需要声明变量为每一列和使用INTO在FETCH子句的方法吗? 换句话说,是有可能使用:

DECLARE c as CURSOR FOR 
SELECT col1, col2 
FROM table;

OPEN c;
FETCH NEXT FROM c; 

SELECT c.col1, c.col2;

Answer 1:

不,你如果想从光标值,而不是存储在本地变量返回它们返回到客户端都要做这种方式。



Answer 2:

如果这是你的整个porcedure(右从OP的问题):

DECLARE @c_col1 varchar(max);
DECLARE @c_col2 varchar(max);

DECLARE c as CURSOR FOR 
SELECT col1, col2 
FROM table;

OPEN c;
FETCH NEXT FROM c INTO
@c_col1, @c_col2;

SELECT @c_col1, @c_col2;

那么你可以做下面的返回结果集的两列,没有必要光标:

SELECT top 1 col1, col2 
FROM table;


文章来源: How to Access Cursor Columns Without FETCH .. INTO