现在有字段完全相同的两个表 A。B ,
我想写一个过程,最好是SQL SERVER的存储过程,
把A的主键,索引 读出来,然后加到B表上去,
最好大家跟点源代码
,那样的话我才能看懂,才能跟分

解决方案 »

  1.   

    if exists(select 1 from sysobjects where name='get_pkays_sp' and type='P')
    drop proc get_pkays_sp
    go
    CREATE PROC get_pkays_sp
    @stablename CHAR(20),
    @dtablename CHAR(20)
    as
    BEGIN
    DECLARE @table_id int
    DECLARE @full_table_name varchar(255) /* 2*128 + 1 */ SELECT @full_table_name = quotename(@stablename)
    /* Get Object ID */
    SELECT @table_id = object_id(@full_table_name)  declare @COLUMN_NAME     char(20)  
      declare @PK_NAME         char(20)
      DECLARE pkeys_cursor CURSOR FOR       --定义未付款的游标
        select
    COLUMN_NAME = convert(sysname,c.name),
    PK_NAME = convert(sysname,i.name)
    from
    sysindexes i, syscolumns c, sysobjects o, syscolumns c1
    where
    o.id = @table_id
    and o.id = c.id
    and o.id = i.id
    and (i.status & 0x800) = 0x800
    and c.name = index_col (@full_table_name, i.indid, c1.colid)
    and c1.colid <= i.keycnt /* create rows from 1 to keycnt */
    and c1.id = @table_id
    order by 1, 2, 3, 5
      OPEN pkeys_cursor
      FETCH NEXT FROM pkeys_cursor
      INTO  @COLUMN_NAME , @PK_NAME
      WHILE @@FETCH_STATUS = 0
      BEGIN
        ---开始运算:
                ALTER TABLE @dtablename ADD 
                
             /* Add a PRIMARY KEY identity column. */ 
              @COLUMN_NAME INT IDENTITY
             CONSTRAINT column_b_pk PRIMARY KEY, 
      FETCH NEXT FROM pkeys_cursor
      INTO @COLUMN_NAME , @PK_NAME
      END
      CLOSE pkeys_cursor
      DEALLOCATE pkeys_cursorend
    go
    写的过于简单了,希望你这样的高手能看懂.
    补充一句:我不是高手
      

  2.   

    to: human_2 (风一帆) 
    瞎写的,千万别告诉我你看不懂.
    哈哈......