在一程序中相实现以下功能,将原来A数据库中AA表中的A1,A2,A3列中的数据复制到B表中AA表中的A1,A2,A3中,表名是相同的,列名也相同,就是不同的数据库,请问有什么办法能实现,是SQLSERVER数据库!有人说用存储过程,我没用过,请教应该怎么写这个存储过程?

解决方案 »

  1.   

    select * from a.aa into b.aa
      

  2.   

    insert into datebase.dbo.table select * from database.dbo.table
      

  3.   

    说个笨办法 你试试
    定义一个游标 ,循环取出原来表里的3个列的数据存入变量里 再根据主健 update b表中的那三个字段
    应该可行
      

  4.   

    代码如下:
    CREATE PROCEDURE [dbo].[xx]
     AS
    DECLARE @b CHAR(10),@c CHAR(10),@d CHAR(10)
    DECLARE WINID CURSOR FOR 
    SELECT b,c,d FROM stock.dbo.aaa
        
    OPEN WINID
    FETCH NEXT FROM WINID
    INTO @b,@c,@d
    WHILE @@FETCH_STATUS=0
    BEGIN
     insert into aaa (b,c,d) values(@b,@c,@d)
    print @b
    FETCH NEXT FROM WINID
    INTO @b,@c,@d
    END
    CLOSE WINID
    DEALLOCATE WINID
      

  5.   

    如果 b 没有记录 则insert 否则 根据 主键 更改相应记录就可以了
    已试过 成功
      

  6.   

    已经很具体了呀 把上面那个存储过程建在 A数据库中 就可以了
    //SELECT b,c,d FROM stock.dbo.aaa  中的 stock.dbo.aaa  是你的 A.dbo.AA
    //@b CHAR(10),@c CHAR(10),@d CHAR(10) 是你的 那三个列名和长度
    //insert into aaa (b,c,d) values(@b,@c,@d)  中的 aaa 是你的 B数据库中的 A表
      

  7.   

    liunini(妮妮) 的做法就可以了。
    不过偶发现SQL里的游标好象速度特别慢。
      

  8.   

    谢谢了liunini,说要详细点是我看了你的第一条回贴发的!我发现了新的问题,我那个A表是要变的,也就是过了一段时间后,又要把B表中的内容拷到新的表C中,过程是一样的,就是那个表是要当前使用表的内容考到新表中!这有不有办法呀?
      

  9.   

    就是那个表是要当前使用表的内容考到新表中!这有不有办法呀?
    不太明白这句话的意思 你那你的abc代替好吗?
    另外 过了一段时间后 是多长呢?
      

  10.   

    直接寫trigger就好了,只要有往A表中寫數據,就觸發TRIGGER往B表中寫一筆同樣的紀錄