【问题标题】:Error on T-Sql in Cursor use游标使用中的 T-Sql 错误
【发布时间】:2013-03-01 15:31:36
【问题描述】:

下面是我的商店操作的一部分,它曾经从表视图中读取数据并对其进行处理,但是有一个错误,我想知道... (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

错误: 消息 16924,第 16 层,状态 1,第 52 行 Cursorfetch:INTO 列表中声明的变量数量必须与所选列的数量相匹配。

【问题讨论】:

    标签: sql-server-2008 tsql


    【解决方案1】:

    你漏掉了一个逗号:

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

    因此,您选择的是 7 列,而不是选择 8 列,其中最后一列您已为其指定别名 TotalTime

    【讨论】:

      【解决方案2】:

      选择列 DetachNumTotalTime 之间缺少逗号。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        • 1970-01-01
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-31
        相关资源
        最近更新 更多