插入表变量获取列名或提供的值数与表定义不匹配

时间:2015-08-11 20:11:03

标签: sql-server-2008

        DECLARE @myTemp TABLE (Item Varchar(10) Not Null,
                            [Description    Varchar(30) Not Null,
                            LonDescription  Varchar(50),
                            [Level]         Char(1),
                            LevelDesc       Varchar(15),
                            GID             Varchar(16),
                            [Min]           Int,
                            [Max]           Int,
                            QTY             Int,
                            QoO             Int)

    FETCH NEXT FROM cAreaLocationItems Into @citem,@cDesc,@cLDesc,@cLVL,@cLVLDesc,@cGID,@cMin,@cMax,@cqty
        IF @@FETCH_STATUS <> 0 -- We're out of items
            BREAK
        WHILE @@FETCH_STATUS = 0
        Begin
            Declare @QoO    Int

            SELECT      @QoO = SUM(QtyReqd - QtyActual) 
            FROM        abc.tblorders
            WHERE     (ItemNumber = @cItem) AND (Status <> '4') And 
                            Bin = @Location 
            GROUP BY    ItemNumber, UPC, [Level], Description, Bin
            If @QoO = Null
                Set @QoO = 0

            Insert into @myTemp values(@cItem,@cDesc,@cLDesc,@clvl,@cLVLDesc,@cGid,@cMin,@cMax,@cQTy,@QoO)

            FETCH NEXT FROM cAreaLocationItems Into @citem,@cDesc,@cLDesc,@cLVL,@cLVLDesc,@cGID,@cMin,@cMax,@cqty
        end

将插入的错误执行存储过程获取到上面定义的@myTemp表变量中。表示10列,插入有10个值。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

尝试在插入查询中指定列名,如下所示:

Insert into @myTemp (Item Varchar,[Description,LonDescription,Level],LevelDesc,GID,[Min],[Max],QTY,QoO) values(@cItem,@cDesc,@cLDesc,@clvl,@cLVLDesc,@cGid,@cMin,@cMax,@cQTy,@QoO)

它可以帮助您在向表中添加新列时避免错误