2016-12-29 61 views
0

我有下面的代码的问题:选入变量获取多列

/* Cursor */ 
DECLARE @RelationCursor CURSOR 
SET @RelationCursor = (SELECT [fms].[dbo].[Relation].[RELATIONCODE], [fms].[dbo].[Relation].[COMPANYNAME] INTO @RelationCode, @CompanyName FROM [fms].[dbo].[Relation]) 

OPEN @RelationCursor 
FETCH NEXT FROM @RelationCursor INTO @RelationCode, @CompanyName 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    print(@RelationCode) 
    print(@CompanyName) 

    FETCH NEXT FROM @RelationCursor INTO @RelationCode, @CompanyName 
END 

CLOSE @RelationCursor 

我试图让RelationCodeCompanyname@RelationCode@Companyname这样我就可以在游标循环中使用它们。但我得到的SELECT查询时出现错误:

消息156,级别15,状态1,过程spLoadProfits,行21
'变成' 关键字附近有语法错误。

但查询似乎完全正常,我似乎无法弄清楚这个问题。有没有人有如何解决这个问题的想法?

回答

2

游标名称不应以@开头,还需要在完成游标处理时释放游标。

试试这个:

DECLARE @RelationCode int, -- I guessed the data type, change if needed 
     @CompanyName varchar(100) -- I guessed the data type, change if needed 

DECLARE RelationCursor CURSOR FOR 
    SELECT [fms].[dbo].[Relation].[RELATIONCODE], [fms].[dbo].[Relation].[COMPANYNAME] 
    FROM [fms].[dbo].[Relation] 

OPEN RelationCursor 

FETCH NEXT FROM RelationCursor INTO @RelationCode, @CompanyName 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    print(@RelationCode) 
    print(@CompanyName) 

    FETCH NEXT FROM RelationCursor INTO @RelationCode, @CompanyName 
END 

CLOSE RelationCursor 
DEALLOCATE RelationCursor;