zoukankan      html  css  js  c++  java
  • 把指定表中的列添加到目标表中不包含的列

    CREATE PROC pro_addColumn
    (
    @oldDB VARCHAR(20),
    @newDB VARCHAR(20),
    @oldtable VARCHAR(50),
    @newtable VARCHAR(50)
    )
    AS
    EXEC ('USE  '+ @newDB+'')
    IF object_id(''+@newtable+'') is null 
     BEGIN
      PRINT @newtable+'不存在,创建表'
      EXEC('SELECT * INTO '+@newtable+' FROM '+@oldtable+' WHERE 1=2')
      PRINT '创建成功'
     END
    ELSE 
    BEGIN 
    DECLARE @colname VARCHAR(30)
    DECLARE @datatype VARCHAR(20)
    DECLARE @length VARCHAR(20)
    EXEC ('USE  '+ @oldDB+'')
    DECLARE test_cursor CURSOR SCROLL FOR
    select name ,type_name(xtype) AS datetype,length
    from syscolumns where id=object_id(''+@oldtable+'')
    OPEN test_cursor
    
    FETCH NEXT FROM test_cursor INTO @colname,@datatype,@length
    PRINT 'old:'+@colname+' '+@datatype+'  '+@length
    WHILE @@FETCH_STATUS=0
    BEGIN
    EXEC ('USE  '+ @newDB+'')
    IF NOT EXISTS(select name  
    from syscolumns where id=object_id(''+@newtable+'')AND name=@colname)
    BEGIN
    PRINT '新表不存在列:'+@colname
    IF @datatype='int' OR @datatype='bit' OR @datatype='text' OR @datatype='xml'
     BEGIN
     PRINT '为表'+@newtable+'添加列:'+@colname+'  '+@datatype+'  '+@length
       EXEC(' ALTER TABLE '+@newtable+' ADD '+@colname+'  '+@datatype+'')
     END
    ELSE
     IF @length='-1'
      BEGIN
       SET @length='MAX'
      END
      PRINT '为表'+@newtable+'添加列:'+@colname+'  '+@datatype+'  '+@length
      EXEC(' ALTER TABLE  '+@newtable+' ADD '+@colname+'  '+@datatype+' ('+@length+')')
      END
    ELSE
    BEGIN
    PRINT '新表中存在列:'+@colname
    END
    
    FETCH NEXT FROM test_cursor INTO @colname,@datatype,@length
    END
    
    CLOSE test_cursor
    DEALLOCATE test_cursor
    END
  • 相关阅读:
    K8S--架构及基本概念
    虚拟化及云原生的一些概念
    JPA事务中的异常最后不也抛出了,为什么没被catch到而导致回滚?
    OpenFaaS实战之六:of-watchdog(为性能而生)
    OpenFaaS实战之五:大话watchdog
    OpenFaaS实战之四:模板操作(template)
    OpenFaaS实战之三:Java函数
    OpenFaaS实战之二:函数入门
    OpenFaaS实战之一:部署
    Python
  • 原文地址:https://www.cnblogs.com/smailxiaobai/p/2976687.html
Copyright © 2011-2022 走看看