游标插入数据

月光下的土豆 2012-11-28 01:37:50
插入的时候,同样的数据总是会重复插入,找不到哪里的问题,请大家帮忙,谢谢
代码如下

/*插入单剧体*/
SET @Cursale=CURSOR FOR SELECT fieldstr2 FROM workflow_filelist WHERE fieldstr2 <> '' and file_id=@File_ID
OPEN @Cursale
FETCH NEXT FROM @Cursale INTO @FChargeIDOA
WHILE @@Fetch_Status=0
BEGIN
SELECT @FChargeIDK3=FItemID FROM AIS20120927170219.dbo.t_Item WHERE FItemClassID=2035 AND FFullName='管理费用_租赁费用_房租费'--@FChargeIDOA
INSERT INTO AIS20120927170219.dbo.FYGL_ExpenseApplyEntry(
FID,
FIndex,
FClassID_SRC,
FSourceBillNo,
FItemClassType,
FID_SRC,
FItemID,
FBankAccountName,
FEntryID_SRC,
FBankBranch,
FBankAccount,
FChargeID,
FSettleTypeID,
FApplyAmount,
FCheckAmount,
FRepaymentDate,
FContactAccountID,
FCashAccountID,
FCheckAmountFor,
FRemark,
FOffAmount,
FRePayAmount,
FLoadBalanceAmount,
FPayAmount,
FReduceAmount
)
SELECT
@FID,
serial,
0,
'',
2,--默认核算到部门
0,
@FApplyDepartmentID,
@FApplyDepartment,
0,
'',
'',
@FChargeIDK3,
@FSettleTypeID,
fieldstr4,
fieldstr4,
GETDATE(),
1018,
0,
fieldstr4*@FExchangeRate,
fieldstr1,
0,
0,
0,
0,
0
FROM workflow_filelist
WHERE file_id=@File_ID AND fieldstr2<>''
FETCH NEXT FROM @Cursale INTO @FChargeIDOA
END
CLOSE @Cursale
DEALLOCATE @Cursale
...全文
181 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
开启时代 2012-11-28
  • 打赏
  • 举报
回复
两个有可能造成数据重复的地方都排除了,单纯游标不会造成数据重复的 。
月光下的土豆 2012-11-28
  • 打赏
  • 举报
回复
引用 10 楼 lixzhong 的回复:
SELECT FItemID FROM AIS20120927170219.dbo.t_Item WHERE FItemClassID=2035 AND FFullName='管理费用_租赁费用_房租费'--@FChargeIDOA 这个查询必然有重复数据 。。。
是唯一的
开启时代 2012-11-28
  • 打赏
  • 举报
回复
SELECT FItemID FROM AIS20120927170219.dbo.t_Item WHERE FItemClassID=2035 AND FFullName='管理费用_租赁费用_房租费'--@FChargeIDOA 这个查询必然有重复数据 。。。
月光下的土豆 2012-11-28
  • 打赏
  • 举报
回复
引用 6 楼 huang110120 的回复:
插入的@FID,@File_ID是不是应该在游标begin end 里面?你需要改变的变量没有根据语句"FETCH NEXT FROM @Cursale INTO @FChargeIDOA"改变,看起来像是ERP产品的东西。
定义到外面了,语法方没有问题
月光下的土豆 2012-11-28
  • 打赏
  • 举报
回复
引用 7 楼 lixzhong 的回复:
对啊 ,这样有问题吗?
没有问题,我想知道游标哪里有问题了
开启时代 2012-11-28
  • 打赏
  • 举报
回复
对啊 ,这样有问题吗?
huang110120 2012-11-28
  • 打赏
  • 举报
回复
插入的@FID,@File_ID是不是应该在游标begin end 里面?你需要改变的变量没有根据语句"FETCH NEXT FROM @Cursale INTO @FChargeIDOA"改变,看起来像是ERP产品的东西。
月光下的土豆 2012-11-28
  • 打赏
  • 举报
回复
引用 4 楼 lixzhong 的回复:
新手很容易从编程的角度来考虑数据 喜欢逐行操作记录 ,其实集合操作才是数据库的真谛。
没有重复的数据。 集合怎么操作 intsert into A select * from B ?
开启时代 2012-11-28
  • 打赏
  • 举报
回复
新手很容易从编程的角度来考虑数据 喜欢逐行操作记录 ,其实集合操作才是数据库的真谛。
發糞塗牆 2012-11-28
  • 打赏
  • 举报
回复
用游标来插数据....i服了
开启时代 2012-11-28
  • 打赏
  • 举报
回复
应该是表 workflow_filelist数据 有重复了吧?
  • 打赏
  • 举报
回复
为什么飞的用游标?????

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧