数据的分多次插入临时表操作

来源:互联网 发布:编程小白 编辑:程序博客网 时间:2024/05/16 10:41

不知道大家遇到过没有,在过滤数据的时候,往往要把数据分好几次的插入到临时表中,而有时会发现第二次插入数据到临时表时,会报
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'card'中的标识列指定显式值,这样的错误。所以我把自己遇到的问题记录了下来,并解决了。以下是我解决后的源码:

ALTER PROC  [dbo].[BeforePaymentC]
@eccUser int,
@wher     varchar(2000)=''
AS
BEGIN
    DECLARE @eccCode VARCHAR(8000)      
    DECLARE @ii        INT
    SET @eccCode=''
    SET @ii=1
   
    SELECT @eccCode=ISNULL(@eccCode,'')+CONVERT(VARCHAR(20),id)+',' FROM dbo.eccCollCard WHERE eccUser =@eccUser AND eccStatu=2
    IF @eccCode<>''
        BEGIN
            SET @eccCode=SUBSTRING(@eccCode,0,LEN(@eccCode))
            IF EXISTS(SELECT * FROM sysobjects WHERE NAME='#ttemp')
                DROP TABLE #ttemp

            --组装临时数据
            WHILE @ii<=dbo.Get_StrArrayLength(@eccCode,',')
                BEGIN
                    IF @ii=1
                        BEGIN
                            SELECT * INTO #ttemp   FROM dbo.eccGoods WHERE ecgCK=dbo.Get_StrArrayStrOfIndex(@eccCode,',',@ii)
                                                                AND NOT EXISTS(SELECT *FROM eccPayment WHERE id=ecgXS and ecpStatu in(0,1))
                            SET IDENTITY_INSERT #ttemp ON
                        END
                    ELSE
                        BEGIN
                            INSERT INTO #ttemp (id,ecgCardCode,ecgStatus,ecgType,ecgInUser,ecgInDate,ecgChkInUser,ecgChkInDate,ecgGetUser,
                                                ecgGetDate,ecgGetUser2,ecgGetDate2,ecgSale,ecgSalePrice,ecgUpPrice,ecgSaleDate,ecgPerid,ecgGetType,
                                                ecgYearCard,ecgGoCar,ecgGoActDate,ecgPassWord,ecgGoUN,ecgGoMobi,ecgRC,ecgCK,
                                                ecgXS,ecgStatu,ecgInterPrice) SELECT id,ecgCardCode,ecgStatus,ecgType,ecgInUser,ecgInDate,ecgChkInUser,ecgChkInDate,ecgGetUser,
                                                ecgGetDate,ecgGetUser2,ecgGetDate2,ecgSale,ecgSalePrice,ecgUpPrice,ecgSaleDate,ecgPerid,ecgGetType,
                                                ecgYearCard,ecgGoCar,ecgGoActDate,ecgPassWord,ecgGoUN,ecgGoMobi,ecgRC,ecgCK,
                                                ecgXS,ecgStatu,ecgInterPrice  FROM dbo.eccGoods WHERE ecgCK=dbo.Get_StrArrayStrOfIndex(@eccCode,',',@ii)
                                                                                AND NOT EXISTS(SELECT *FROM eccPayment WHERE id=ecgXS and ecpStatu in(0,1))
                        END
                    SET @ii=@ii+1
                END
            IF @eccCode<>''
                BEGIN
                    SET IDENTITY_INSERT #ttemp OFF
                    IF @wher='' OR @wher IS NULL OR LEN(@wher)=0
                        SELECT *FROM #ttemp
                    ELSE
                        EXEC('SELECT *FROM #ttemp   WHERE '+ @wher)
                END
        END
END

go

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 违章处理单掉了怎么办 驾驶证被扣9分后怎么办 车子违章扣50分怎么办 车子扣了12分怎么办 大学把档案丢了怎么办 学校把档案丢了怎么办 高考考了200多分怎么办 高考报名号忘了怎么办 中考只考500分怎么办 档案自提了之后怎么办 冬天衣服上的毛怎么办 四维预约不上怎么办 交了订金后悔了怎么办 信而富认证失败怎么办 南京市民卡坏了怎么办 南京市民卡断了怎么办 义乌市民卡丢了怎么办 常熟市民卡丢了怎么办 昆山市民卡丢了怎么办 市民卡丢了看病怎么办 儿童市民卡丢了怎么办 眉毛纹的太黑怎么办 法院执行书下了怎么办 汽车临牌过期了怎么办 考试用了hb铅笔怎么办 处对象处的心累怎么办 孩子初中毕业考不上高中怎么办 单位停交社保后怎么办 58同城电话骚扰怎么办 回民误吃了猪肉怎么办 回族人吃了猪肉怎么办 商场倒闭了商铺怎么办 吃了金毓婷出血怎么办 吃过毓婷后怀孕怎么办 新鲜枣子吃多了怎么办 xp系统重启黑屏怎么办 15岁初中生厌学怎么办 被九州教育骗了怎么办 腰疼的不能弯腰怎么办 长期弯腰导致的腰疼怎么办 孕妇闻了油漆味怎么办