如何从用多列定义的游标中读取单列

How to read a single column from a cursor defined with multiple columns

我有一个游标:

DECLARE db_inner_cursor_info CURSOR FOR Select Col1 , Col2 ..... from TBL1

OPEN db_inner_cursor_info
    FETCH NEXT FROM db_inner_cursor_info
    INTO @Col1
    print @Col1
etc.

我只需要 TBL1.Col1 中的值,但我无法从游标声明中的 SELECT 语句中删除其余列。

我怎样才能做到这一点?

虽然令人困惑的是为什么您需要 SELECT 中的所有列,但您可以 select 进入多个变量,如下所示。为 SELECT 部分

中的列列表定义变量
DECLARE db_inner_cursor_info CURSOR FOR Select Col1 , Col2, col3 from TBL1

OPEN db_inner_cursor_info
                FETCH NEXT FROM db_inner_cursor_info
                INTO @Col1, @Col2, @Col3

如果你真的不能改变游标声明中的 SELECT 语句(我认为你绝对应该能够这样做),那么你唯一的选择是也从 [=11] 中获取其他列=] 声明到你的 INTO 子句中的变量,即使你没有将这些变量用于任何事情:

DECLARE @Col1 VARCHAR(50)
DECLARE @Col2 VARCHAR(50)
DECLARE @Col3 VARCHAR(50)
DECLARE @Col4 VARCHAR(50)

DECLARE db_inner_cursor_info CURSOR FOR Select Col1 , Col2, Col3, Col4 from TBL1

OPEN db_inner_cursor_info
FETCH NEXT FROM db_inner_cursor_info INTO @Col1, @Col2, @Col3, @Col4

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @Col1
    FETCH NEXT FROM db_inner_cursor_info INTO @Col1, @Col2, @Col3, @Col4
END

CLOSE db_inner_cursor_info
DEALLOCATE db_inner_cursor_info

如您所见,虽然我们从 TBL1 中的所有列中获取值,但我们仅使用 Col1 中的值。

这听起来是一个很奇怪的要求,但您可以声明额外的变量,然后将额外的变量取入其中,但不对它们进行任何操作。像....

Declare @Col1 Varchar(10), @Col2 Varchar(10),..... 

DECLARE db_inner_cursor_info CURSOR FOR 
Select Col1 , Col2 ..... from TBL1

OPEN db_inner_cursor_info

FETCH NEXT FROM db_inner_cursor_info INTO @Col1, @Col2 .......