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游标声明中的语句中删除其余的列.
我怎样才能做到这一点?
如果你真的无法改变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.