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

SQL Server 自動產生 Insert/Update 預存程序工具:Sp_GenInsert 與 Sp_GenUpdate

     編輯:關於SqlServer

背景動機

資料庫系統開發過程中需撰寫大量預存程序。為統一格式、簡化開發,設計兩個工具預存程序自動產生 Insert 與 Update 程式碼,作為後續開發基礎。

Sp_GenInsert:自動產生 Insert 預存程序

語法

sp_GenInsert @TableName, @StoredProcedureName

參數說明

參數說明
@TableName目標資料表名稱
@StoredProcedureName要產生的預存程序名稱

使用範例 (Northwind 資料庫)

EXEC sp_GenInsert 'Employees', 'INS_Employees'

輸出結果

產生完整的 Insert 預存程序,包含所有欄位參數。注意:若原表有識別欄位 (Identity),產生的程式碼中會包含 SET IDENTITY_INSERT ON,需手動移除。

Sp_GenUpdate:自動產生 Update 預存程序

語法

sp_GenUpdate @TableName, @PrimaryKey, @StoredProcedureName

參數說明

參數說明
@TableName目標資料表名稱
@PrimaryKey主鍵欄位名稱
@StoredProcedureName要產生的預存程序名稱

使用範例 (Northwind 資料庫)

EXEC sp_GenUpdate 'Employees', 'EmployeeID', 'UPD_Employees'

產生的預存程式碼結構

CREATE PROCEDURE UPD_Employees
    @EmployeeID int,
    @LastName nvarchar(40),
    @FirstName nvarchar(20),
    @Title nvarchar(60),
    @TitleofCourtesy nvarchar(50),
    @BirthDate datetime,
    @HireDate datetime,
    @Address nvarchar(120),
    @City nvarchar(30),
    @Region nvarchar(30),
    @PostalCode nvarchar(20),
    @Country nvarchar(30),
    @HomePhone nvarchar(48),
    @Extension nvarchar(8),
    @Photo image,
    @Notes ntext,
    @ReportsTo int,
    @PhotoPath nvarchar(510)
AS
UPDATE Employees
SET
    LastName = @LastName,
    FirstName = @FirstName,
    Title = @Title,
    TitleofCourtesy = @TitleofCourtesy,
    BirthDate = @BirthDate,
    HireDate = @HireDate,
    Address = @Address,
    City = @City,
    Region = @Region,
    PostalCode = @PostalCode,
    Country = @Country,
    HomePhone = @HomePhone,
    Extension = @Extension,
    Photo = @Photo,
    Notes = @Notes,
    ReportsTo = @ReportsTo,
    PhotoPath = @PhotoPath
WHERE EmployeeID = @EmployeeID

工具優勢與限制

優勢限制
統一命名慣例與程式碼風格產生的程式碼需人工檢查調整
大幅減少重複撰寫參數宣告Identity 欄位需手動處理 SET IDENTITY_INSERT
自動對應資料型別與長度複雜業務邏輯仍需手工實作
降低拼字錯誤與欄位遺漏不處理觸發器、檢查條件約束等
加速原型開發與 CRUD 基礎建構僅支援單一資料表操作

擴充建議

  • 加入 @SchemaName 參數支援多結構描述
  • 產生 TRY-CATCH 錯誤處理區塊
  • 支援樂觀鎖定 (Timestamp/Rowversion 欄位)
  • 產生 MERGE 模式 (Upsert) 版本
  • 加入註解標註產生時間與工具版本
  • 整合至開發工具 (SSMS 快捷鍵/外掛)

原始碼取得方式

完整 sp_GenInsert 與 sp_GenUpdate 實作程式碼可參考原文連結或自行實作:核心邏輯為查詢 INFORMATION_SCHEMA.COLUMNS 取得欄位中繼資料,動態組裝 T-SQL 字串並列印輸出。

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