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

Dan*_*riq -3 sql t-sql sql-server cursor

我有一个光标:

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.
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能做到这一点?

3N1*_*GM4 5

如果你真的无法改变SELECT游标声明中的语句(我认为你绝对应该能够这样做),那么你唯一的选择是将该SELECT语句中的其他列提取到你的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
Run Code Online (Sandbox Code Playgroud)

如您所见,当我们从所有列中获取值时TBL1,我们只使用来自的值Col1.