如何从用多列定义的游标中读取单列
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 .......
我有一个游标:
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 .......