none
SQL批量插入数据 RRS feed

  • 问题

  • 现有一个存储过程,需要实现批量插入数据。插入的数据一共有三个,第一个是要通过储存过程的输入参数通过查询得到一个集合。第二和第三个是直接从储存过程的参数取单一值。请教如何实现批量插入?在线等,谢谢先!
    zy
    2009年3月31日 0:31

答案

  • To:X.X.Y:谢谢您的回复。问题我已解决。代码如下:
    insert into T_Sample_Move
           select ID as SampleID,@whId as WHID,@userId as UserID,getdate() as [Time]
           from T_Sample_Bas
           where ID in(select ID from T_Sample_Bas where TrustID=(select ID from T_TrustRegister where TrustNum=@trustNum ));
    zy
    改為這樣

    insert into T_Sample_Move
           select ID as SampleID,@whId as WHID,@userId as UserID,getdate() as [Time]
           from T_Sample_Bas t
           where exists(select 1 from T_TrustRegister where TrustNum=@trustNum and ID=t.TrustID)
    


    吳熹
    • 已标记为答案 张烨 2009年4月1日 4:52
    2009年4月1日 4:42
    版主

全部回复


  • --你好
    -- 第一个问题楼主是不是想知道,怎么得到存储过程反加结果是吧,如果是下面的代码就OK了,但表的结构必须和返回的结构是一样的
    if exists (select 1 from sysobjects where name = 'sp_GetTestTable' and type = 'p')
    drop proc sp_GetTestTable
    go

    create proc sp_GetTestTable
    as 
    select 1, 2

    go

    declare @table table (id1 int, id2 int)
    insert into @table exec sp_GetTestTable
    select * from  @table

    --至于第二和第三可以通过设置参数的 output 来获取

    知识改变命运,奋斗成就人生!
    2009年3月31日 1:20
  • To:X.X.Y:谢谢您的回复。问题我已解决。代码如下:
    insert into T_Sample_Move
           select ID as SampleID,@whId as WHID,@userId as UserID,getdate() as [Time]
           from T_Sample_Bas
           where ID in(select ID from T_Sample_Bas where TrustID=(select ID from T_TrustRegister where TrustNum=@trustNum));
    zy
    2009年3月31日 1:24
  • 你这个T-SQL真的写得够邋遢的,在where中in,还带子查询,效率很低啊。
    2009年3月31日 12:16
  • To:X.X.Y:谢谢您的回复。问题我已解决。代码如下:
    insert into T_Sample_Move
           select ID as SampleID,@whId as WHID,@userId as UserID,getdate() as [Time]
           from T_Sample_Bas
           where ID in(select ID from T_Sample_Bas where TrustID=(select ID from T_TrustRegister where TrustNum=@trustNum ));
    zy
    改為這樣

    insert into T_Sample_Move
           select ID as SampleID,@whId as WHID,@userId as UserID,getdate() as [Time]
           from T_Sample_Bas t
           where exists(select 1 from T_TrustRegister where TrustNum=@trustNum and ID=t.TrustID)
    


    吳熹
    • 已标记为答案 张烨 2009年4月1日 4:52
    2009年4月1日 4:42
    版主
  • 谢谢中国风MVP的指点。:)
    zy
    2009年4月1日 4:55