光标使用中的T-Sql出错

时间:2013-03-01 07:19:09

标签: sql-server-2008 tsql

下面的

是我的商店peocedure的一部分,用于从表的视图中读取数据并对其进行处理,但是有错误,我想知道...... (在select语句中出现8个参数,光标前面出现8个参数但有错误!!!)

DECLARE CUR CURSOR FOR 
SELECT PkJobDoneDaily_Id
       , Fk_ExecCarInOwner
       , Fk_ActivityType
       , Fk_CostSrc
       , Fk_ShiftNum
       , Fk_WorkGroup
       , DetachNum
        TotalTime
FROM  dbo. ViewAccJobDoneDaily
WHERE Fk_JobDonePeriod = @Fk_JobDonePeriod and IsOk=1 AND IsDel=0 AND Fk_ActivityType=2

OPEN CUR
FETCH NEXT FROM CUR INTO @Fk_JobDoneDaily,@Fk_ExecCarInOwner,@Fk_ActivityType
    ,@Fk_CostSrc,@Fk_ShiftNum,@Fk_WorkGroup,@DetachNum,@TotalTime

错误: Msg 16924,Level 16,State 1,Line 52 Cursorfetch:INTO列表中声明的变量数必须与所选列的变量数相匹配。

2 个答案:

答案 0 :(得分:2)

你错过了一个逗号:

SELECT PkJobDoneDaily_Id
   , Fk_ExecCarInOwner
   , Fk_ActivityType
   , Fk_CostSrc
   , Fk_ShiftNum
   , Fk_WorkGroup
   , DetachNum
    TotalTime --<-- Here

因此,您不是选择8列,而是选择7列,最后一列是TotalTime的别名。

答案 1 :(得分:0)

选择列DetachNumTotalTime之间缺少逗号。

备注:也许您应该检查您的选择列PkJobDoneDaily_Id与变量@Fk_JobDoneDaily具有相同的名称,以避免混淆(名称以P与F开头)。