zoukankan      html  css  js  c++  java
  • spAutoProc_ZField

    CREATE PROCEDURE spAutoProc_ZField @SourceTableName varchar(50), @TargetTableName varchar(50), @FieldMapTable varchar(50)
    AS
     DECLARE @altQuery  nvarchar(1000),
       @sql   nvarchar(1000),
       @updQuery  nvarchar(1000),
       @colName  nvarchar(100),
       @idx1   int,
       @idx2   int
      
     SELECT @sql =
      ' DECLARE cs_AltQuery CURSOR FOR ' +
      ' SELECT ' +
      '''ALTER TABLE ''+''' + @SourceTableName + '''+'' ADD z''+' + 'COLUMN_NAME' + '+'' ''' +
      ' +DATA_TYPE+ ' + 'CASE ' +
           ' WHEN character_maximum_length IS NULL AND numeric_scale IS NULL  THEN ''(''+ cast(NUMERIC_PRECISION AS varchar(10)) + '')''' +
           ' WHEN character_maximum_length IS NULL AND NOT numeric_scale = 0   THEN ''(''+ cast(NUMERIC_PRECISION AS varchar(10))+' + ''', ''' + '+cast(NUMERIC_SCALE AS varchar(10)) + '')''' +
           ' WHEN character_maximum_length IS NULL AND numeric_scale = 0   THEN '' ''' +
           ' ELSE ''(''+ cast(character_maximum_length AS varchar(10)) + '')'' END +' +
           ' '' NULL''' +
      ' FROM  information_schema.columns ' +
      ' WHERE TABLE_NAME = ''' + @TargetTableName + ''' AND ' +
      '   COLUMN_NAME IN (SELECT ColumnName FROM ' + @FieldMapTable +
      '       WHERE SourceTableName = ''' + @SourceTableName + ''' AND ' +
      '       Flag = 0 )'

     EXEC sp_executesql @sql

     OPEN cs_AltQuery
     FETCH NEXT FROM cs_AltQuery INTO @altQuery

     WHILE @@FETCH_STATUS = 0
     BEGIN
      PRINT 'Processing query ''' + @altQuery + ''' ...'
      SELECT @idx1 = CHARINDEX(' ', @altQuery, 16+LEN(@SourceTableName))
      SELECT @idx2 = CHARINDEX(' ', @altQuery, 1+@idx1)
      SELECT @colName = SUBSTRING(@altQuery, 2+@idx1, @idx2-@idx1-1)

      EXEC (@altQuery)
      SELECT @updQuery = ' UPDATE ' + @FieldMapTable +
          ' SET Flag = 1 ' +
          ' WHERE ColumnName = ''' + @colName + ''''
      EXEC (@updQuery)
      PRINT 'The query ''' + @altQuery + ''' has been successfully processed.'
      FETCH NEXT FROM cs_AltQuery INTO @altQuery
     END
     CLOSE cs_AltQuery
     DEALLOCATE cs_AltQuery

  • 相关阅读:
    hdu acm 2639背包问题,这题很经典啊~~~
    hdu acm 2191
    qt中实现区域反白效果
    解决pythonxml 模块 在ubuntu karmic中找不到的问题
    Python正则表达式操作指南
    webkit 资料
    标点符号的英语名称
    ubuntu设置分辨率
    如何绑定多个action到一个slot
    改注册表,实现像迅雷一样的自定义url
  • 原文地址:https://www.cnblogs.com/zhangchenliang/p/1660844.html
Copyright © 2011-2022 走看看