9

我正在使用 SQL Server 构建存储过程,并且我正在使用游标循环选择语句

我将光标定义如下:

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;

有没有一种方法可以访问游标的列而无需为每列声明变量并在 FETCH 子句中使用 INTO?换句话说,是否可以使用:

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

OPEN c;
FETCH NEXT FROM c; 

SELECT c.col1, c.col2;
4

2 回答 2

4

不,如果要将游标中的值存储在局部变量中而不是将它们返回给客户端,则必须这样做。

于 2009-08-19T10:09:12.740 回答
0

如果这是你的整个 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;
于 2009-08-19T11:49:15.580 回答