?? 14.3.4 添加列到指定位置.sql
字號:
--開啟系統表寫功能以便創建存儲過程
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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -