本文示範如何讓 TableAdapter 使用資料庫現有 Stored Procedure,包含在 SSMS 建立 SP、TableAdapter 精靈對應、以及在 SP 中使用交易包裝多條 T-SQL 命令。
CREATE PROCEDURE dbo.Products_SelectByCategoryID
@CategoryID int
AS
SELECT ProductID, ProductName, SupplierID, CategoryID,
QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder,
ReorderLevel, Discontinued
FROM Products
WHERE CategoryID = @CategoryID
Products_SelectByCategoryID。ALTER PROCEDURE。Products_SelectByCategoryID → 參數自動對應 @CategoryID。GetProductsByCategoryID。CREATE PROCEDURE DeleteCategoryWithProducts
@CategoryID int
AS
BEGIN TRANSACTION
BEGIN TRY
DELETE FROM Products WHERE CategoryID = @CategoryID;
DELETE FROM Categories WHERE CategoryID = @CategoryID;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION;
RAISERROR('刪除失敗,交易已回滾', 16, 1);
END CATCH
BEGIN TRANSACTION / COMMIT / ROLLBACK。TRY...CATCH 確保原子性。使用現有 SP 讓資料庫邏輯集中管理、DBA 可獨立優化。TableAdapter 精靈支援參數自動對應,開發效率高。交易控制在 SP 內完成,確保資料一致性。