create PROC CreateTableSql @TableName varchar(50) AS declare @FieldName varchar(50) ,@FieldDescrible varchar(50) ,@DbType varchar(50) declare @DbLength varchar(50) ,@DbDecimal varchar(50) ,@Default varchar(50) ,@IsIdentity bit ,@IsNull bit ,@IsPrimaryKey bit declare @CreateSql varchar(8000),@AddFieldSql varchar(300),@FieldSql varchar(3000) declare @PrimaryKey varchar(200) ,@NULL varchar(10) ,@Identity varchar(20),@PropertySql varchar(8000) set @PrimaryKey='' set @FieldSql='' SET @PropertySql='' DECLARE MyCursor CURSOR FOR select FieldName,isnull(FieldDescrible,''),isnull(DbType,''),DbLength,DbDecimal,isnull([Default],''),IsIdentity, isnull([IsNull],0),IsPrimaryKey from Fields where TableName =@TableName order by SortNO OPEN MyCursor FETCH NEXT FROM MyCursor INTO @FieldName,@FieldDescrible,@DbType,@DbLength,@DbDecimal,@Default,@IsIdentity,@IsNull,@IsPrimaryKey WHILE @@FETCH_STATUS = 0 BEGIN if @IsNull=1 set @NULL =' NULL' ELSE set @NULL =' NOT NULL' if @IsPrimaryKey =1 set @NULL =' NOT NULL' if @DbType in ('uniqueidentifier','int','datetime','timestamp','smallint') set @DbLength='' else set @DbLength='('+@DbLength+')' if @IsIdentity=1 set @Identity =' IDENTITY(1,1) ' else set @Identity ='' if @Default='' set @AddFieldSql = ' ['+ @FieldName+'] ' + @DbType +@DbLength +@Identity+ @Null +',' else set @AddFieldSql = ' ['+ @FieldName+'] ' + @DbType +@DbLength +@Identity+ @Null +' default '+@Default +',' if @FieldSql='' set @FieldSql= @AddFieldSql else set @FieldSql= @FieldSql+ CHAR(10) +@AddFieldSql if @IsPrimaryKey =1 begin if @PrimaryKey<>'' set @PrimaryKey= @PrimaryKey+'['+ @FieldName+'] ' if @PrimaryKey='' set @PrimaryKey= '['+ @FieldName+'] ' end SET @PropertySql=@PropertySql+CHAR(10)+ ' GO'+ CHAR(10)+ 'EXEC sys.sp_addextendedproperty @name=N'+''''+'MS_Description'+''''+', @value=N'+''''+@FieldDescrible +''''+', @level0type=N'+''''+'SCHEMA'+'''' +',@level0name=N'+''''+'dbo'+'''' +', @level1type=N'+''''+'TABLE'+''''+',@level1name=N'+''''+@TableName+''''+', @level2type=N'+''''+'COLUMN'+''''+',@level2name=N'+''''+@FieldName+'''' FETCH NEXT FROM MyCursor INTO @FieldName,@FieldDescrible,@DbType,@DbLength,@DbDecimal,@Default,@IsIdentity,@IsNull,@IsPrimaryKey END CLOSE MyCursor; DEALLOCATE MyCursor; set @CreateSql =' if exists (select * from sysobjects where name='''+@TableName +''')' set @CreateSql=@CreateSql+ CHAR(10) + ' drop table '+@TableName set @CreateSql=@CreateSql+ CHAR(10) + ' GO ' set @CreateSql=@CreateSql+ CHAR(10) + ' CREATE TABLE '+@TableName+ CHAR(10)+'(' set @CreateSql=@CreateSql+ CHAR(10) + ''+@FieldSql set @CreateSql=@CreateSql+ CHAR(10) + ' CONSTRAINT [PK_'+ @TableName +'] PRIMARY KEY CLUSTERED (' set @CreateSql=@CreateSql+ CHAR(10) +' '+ @PrimaryKey+' ASC '+ CHAR(10)+' )' set @CreateSql=@CreateSql+ CHAR(10) + ' WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ' set @CreateSql=@CreateSql+ CHAR(10) +' ) ON [PRIMARY] ' PRINT @CreateSql print @PropertySql