首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

預存程序 FuncADDColumn:動態新增資料表欄位(含存在性檢查)

     編輯:關於SqlServer

功能說明

檢查資料表是否已存在指定欄位,不存在則動態新增。支援任意資料型別定義,提升結構變更腳本的彈性與安全性。

完整程式碼

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 系統表檢查欄位存在性
  • 動態 SQL 配合 EXECUTE 執行 DDL
  • 欄位名以方括號 `[]` 包裹,支援保留字與特殊字元
  • 預設允許 NULL,避免非空欄位導致既有資料行插入失敗

適用版本

SQL Server 7.0 / 2000 / 2005+ 相容

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved