-- =============================================
-- Author: <Pigeon>
-- Create date: <2012.08.31>
-- Description: @StartFieldNo:开始字段编号,@AddLength:要增加几个字段,@TableName:表名
-- =============================================
CREATE PROCEDURE [dbo].[AddFields]
@StartFieldNo INT,@AddLength INT,@TableName VARCHAR(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @MaxFieldNo INT; --获得最大字段编号
DECLARE @AddFieldName VARCHAR(20); --获得要增加的字段名称
DECLARE @SQL NVARCHAR(300);
SET @MaxFieldNo=@StartFieldNo+@AddLength;
PRINT (@MaxFieldNo);
WHILE @StartFieldNo<=@MaxFieldNo
BEGIN
PRINT '---Start--';
--REPLICATE函数可以生成指定个数的字符,第一个参数为要生成的字符,第二个参数为生成个数
--CAST函数用于类型转换,这里是把整形转换为VarChar类型
SELECT @AddFieldName='F' + REPLICATE('0',3-DATALENGTH(CAST(@StartFieldNo AS VARCHAR(10)))) +
CAST(@StartFieldNo AS VARCHAR(10));
PRINT '='+@AddFieldName;
IF NOT EXISTS (SELECT * FROM syscolumns WHERE ID=OBJECT_ID(@TableName) AND name=@AddFieldName)
BEGIN
--ALTER TABLE @TableName ADD @AddFieldName nvarchar(150);
SET @SQL='ALTER TABLE '+ @TableName +
' ADD ' + @AddFieldName + ' nvarchar(150);';
PRINT @SQL;
--EXEC (@SQL);
EXEC sp_executesql @SQL;
END
SET @StartFieldNo=@StartFieldNo+1;
END
END
调用
EXEC AddFields 8,3,'Index_Second'