--思路:從表中查詢出記錄,使用表變量,遍歷記錄,構造建立表sql語句。 /****** Object: StoredProcedure [dbo].[ctable] Script Date: 01/20/2016 14:26:30 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[ctable] AS BEGIN if exists(select * from sysobjects where name='Work_ClassShiftPre' and xtype='U') drop table Work_ClassShiftPre declare @sql varchar(5000) DECLARE @temp TABLE ( CType varchar(20), CName varchar(100) ) insert into @temp(CType, CName) SELECT paytype_id, paytype_name FROM Sys_PayType declare @CType varchar(20) declare @CName varchar(100) set @sql = ' create table Work_ClassShiftPre (ClassShift_Item varchar(100),'; while EXISTS ( SELECT CType FROM @temp) begin set rowcount 1 select @CType=CType, @CName = CName from @temp set rowcount 0 set @sql = @sql + @CName +' varchar(100),' --print @Cname DELETE FROM @temp WHERE CType=@CType; end select @sql = Substring(@sql,0,Len(@sql)) set @sql = @sql + ')'; exec(@sql) END GO