我正在使用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;
有没有办法访问游标的列而不需要为每列声明变量并在FETCH子句中使用INTO?换句话说,是否可以使用:
DECLARE c as CURSOR FOR
SELECT col1, col2
FROM table;
OPEN c;
FETCH NEXT FROM c;
SELECT c.col1, c.col2;
答案 0 :(得分:3)
不,如果要将游标中的值存储在局部变量中而不是将它们返回给客户端,则必须这样做。
答案 1 :(得分:0)
如果这是你的整个程序(从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;