檢查資料表是否已存在指定欄位,不存在則動態新增。支援任意資料型別定義,提升結構變更腳本的彈性與安全性。
CREATE PROCEDURE FuncADDColumn
@tablename VARCHAR(128), -- 資料表名稱
@Columnname VARCHAR(128), -- 欄位名稱
@ColumnType VARCHAR(128) -- 欄位定義(含型別、長度、約束)
AS
BEGIN
-- 去除前後空白
SET @tablename = LTRIM(RTRIM(@tablename))
SET @Columnname = LTRIM(RTRIM(@Columnname))
SET @ColumnType = LTRIM(RTRIM(@ColumnType))
DECLARE @string VARCHAR(8000)
-- 檢查欄位是否存在
IF NOT EXISTS (
SELECT * FROM syscolumns
WHERE id = OBJECT_ID(@tablename) AND name = @Columnname
)
BEGIN
-- 動態建構 ALTER TABLE 陳述句
SELECT @string = 'ALTER TABLE ' + @tablename + ' ADD ['
+ LTRIM(RTRIM(@Columnname)) + '] ' + @ColumnType + ' NULL'
PRINT @string
EXECUTE(@string)
END
END
GO
-- 新增整數欄位
EXECUTE FuncADDColumn 'TableA', 'NewCol', 'INT'
-- 新增字串欄位
EXECUTE FuncADDColumn 'TableA', 'Description', 'VARCHAR(100)'
syscolumns 系統表檢查欄位存在性EXECUTE 執行 DDLSQL Server 7.0 / 2000 / 2005+ 相容