日期:2014-05-18 浏览次数:20897 次
--开启系统表写功能以便创建存储过程 EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE GO CREATE PROC sp_addColumn @TableName sysname, --要添加字段的表名 @FieldDefine nvarchar(1000), --要添加的列的定义,定义必须符合ALTER TABLE tbname ADD规范 @Position int=-1 --添加列位置,其值为1~表的总列数,比如1,表示添加为第1列, -- 如果@Position无效,则仅添加列 AS IF ISNULL(OBJECTPROPERTY(OBJECT_ID(@TableName),'IsUserTable'),0)=0 BEGIN RAISERROR(N'无效的表名 "%s"',12,16,@TableName) return END --添加字段 DECLARE @s nvarchar(4000) SET @s=N'ALTER TABLE '+QUOTENAME(@TableName)+N' ADD '+@FieldDefine BEGIN TRAN EXEC sp_executesql @s IF @@ERROR=0 BEGIN DECLARE @maxcolid int SELECT @Position=ISNULL(@Position,0),@maxcolid=MAX(colid) FROM syscolumns WHERE id=OBJECT_ID(@TableName) IF @Position>0 AND @Position<@maxcolid UPDATE syscolumns SET colid=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END, colorder=CASE colid WHEN @maxcolid THEN @Position ELSE colid+1 END WHERE id=OBJECT_ID(@TableName) AND colid>=@Position COMMIT TRAN END ELSE ROLLBACK TRAN GO --关闭系统表写功能 EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE