CREATEProcedure DBGenData @tableNameVarchar(100)--表名 AS DECLARE@IsIdentityINT DECLARE@columnNameVARCHAR(100)--列名 DECLARE@TypeNameVARCHAR(100)--数据类型 DECLARE@columnsVARCHAR(3000)-- DECLARE@columnsAndheadVARCHAR(3000)-- SET@columnsAndhead='INSERT INTO '+@tableName+'([' SET@columns='' --获取表的所有字段名称 DECLARE a CURSORFOR SELECTCOLUMNPROPERTY( a.id,a.name,'IsIdentity') AS IsIdentity, a.[NAME]AS ColumnName ,b.[NAME]AS TypeName FROM syscolumns a INNERJOIN systypes b ON a.xtype=b.xtype AND b.xtype=b.xusertype WHERE a.[id]=(SELECT[id]FROM sysobjects WHERE[NAME]=@tableName) OPEN a FETCHNEXTFROM a INTO@IsIdentity, @columnName ,@TypeName WHILE@@FETCH_STATUS=0 BEGIN IF@IsIdentity=0 BEGIN IF@TypeNameIN ('bigint','bit','decimal','float','int','money','numeric','real','smallint','smallmoney','tinyint') BEGIN SET@columns=@columns+'ISNULL(CAST(['+@columnName+'] AS VARCHAR),''NULL'')+'',''+' END ELSE BEGIN SET@columns=@columns+'''''''''+ ISNULL(CAST(['+@columnName+'] AS VARCHAR),''NULL'')+ ''''''''+'',''+' END SET@columnsAndhead=@columnsAndhead+''+@columnName+'],[' END FETCHNEXTFROM a INTO@IsIdentity, @columnName ,@TypeName END SELECT@columnsAndhead=left(@columnsAndhead,len(@columnsAndhead)-2) +') VALUES(''' SELECT@columns=left(@columns,len(@columns)-5) CLOSE a DEALLOCATE a exec('select '''+@columnsAndhead+'+'+@columns+'+'')'' as InsertSQL from '+@tableName) GO