昨天的需求没讲完,刚刚研究了下 发现需求有变动,
假如有,A和B表
A表有列:a1,a2,a3,a4,a5
b表有列:b1,b2,b3,b4,b5,b6
现在需求是传5个参数到存储过程c1,c2,c3,c4,c5,c6
根据c1,c2的值查询出A表对于的集合,比如select a1,a4,a5 from A where a2=c1 and a3=c2
然将A表中找出的集合混合c4,c5,c6插入到B表中,A表中找出的a1对应B表中的b1,a4对应b2,a5对应b3,c4对应b4,c5对应b5,c6对应b6
然后在然后插入B表的总数值。。
就这样了,需求应该说的比较清楚了吧。

解决方案 »

  1.   

    现在需求是传5个参数到存储过程c1,c2,c3,c4,c5,c6
    根据c1,c2的值查询出A表对于的集合,比如select a1,a4,a5 from A where a2=c1 and a3=c2
    然将A表中找出的集合混合c4,c5,c6插入到B表中,A表中找出的a1对应B表中的b1,a4对应b2,a5对应b3,c4对应b4,c5对应b5,c6对应b6表達不清楚,所以c3沒用到
      

  2.   

    select a1,a4,a5 from A where a2=c1 and a3=c2
    是多行数据吧?    
      

  3.   

    create proc test
      @c1 int ,  --your type
      @c2 ..
    as
      insert into B
      select a1,a4,a5,c4,c5,c6
      from A
      where a2=c1 and a3=c2  select @@rowcount
      

  4.   

    create proc test
      @c1 int , --your type
      @c2 ..
    as
      insert into B
      select a1,a4,a5,@c4,@c5,@c6
      from A
      where a2=@c1 and a3=@c2  select @@rowcount
      

  5.   

    算了 我在说明白点
    假如A表数据 列名: a1 a2 a3 a4 a5 a6
              数据1: 1 aa  bb cc dd ee
              数据2: 2 aa  bb gg hh ii
    传5个参数aa,bb,qq,ww,ee
    然后select a1,a4,a5 from A where a2='aa' and a3='bb'
    然将A表中找出的集合混合qq,ww,ee插入到B表中
    然后B表的数据为列名: b1 b2 b3 b4 b5 b6 b7
                 数据1:1  cc dd ee qq ww ee
                 数据2:2  gg hh ii qq ww ee
    在返回一个插入B的行数,本例子为2行,则返回2行。
    这下该够清楚了吧
      

  6.   

    create proc proc_trans_return @a varchar(2),@b varchar(2),
    @c varchar(2),@d varchar(2),@e varchar(2),@count int output
    asinsert into B
    select a1,a4,a5,@c,@d,@e
    from A
    where a2=@a and a3=@bselect @count = @@rowcount
      

  7.   


    CREATE TABLE A(
    a1 int,
    a2 varchar(20),
    a3 varchar(20),
    a4 varchar(20),
    a5 varchar(20),
    a6 varchar(20)
    );INSERT INTO a(a1,a2,a3,a4,a5,a6)
    SELECT
    1, 'aa', 'bb', 'cc', 'dd', 'ee'  UNION ALL SELECT
    2, 'aa', 'bb', 'gg', 'hh', 'ii';CREATE TABLE B(
    b1 int,
    b2 varchar(20),
    b3 varchar(20),
    b4 varchar(20),
    b5 varchar(20),
    b6 varchar(20),
    b7 varchar(20)
    );DROP PROCEDURE insert_b;CREATE PROCEDURE insert_b(
    @v1 NVARCHAR(20),
    @v2 NVARCHAR(20),
    @v3 NVARCHAR(20),
    @v4 NVARCHAR(20),
    @v5 NVARCHAR(20) )
    AS
    BEGIN
      INSERT INTO b(b1,b2,b3,b4,b5,b6,b7)
      SELECT a1, a4, a5, a6, @v3, @v4, @v5
      FROM a
      WHERE a.a2=@v1 AND a.a3=@v2;
    END
    EXEC insert_b 'aa','bb','qq','ww','ee';SELECT * FROM a;
    SELECT * FROM b;