自己写的一个存储过程例子,用来增加字段

来源:互联网 发布:finder for mac 编辑:程序博客网 时间:2024/05/19 16:36

-- ============================================= 
-- 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'