TableAdapter 主查詢定義 DataTable 結構。若其他方法需回傳主查詢無欄位(如統計、計算欄位),必須手動擴充 DataTable 結構。本文示範為 ProductsDataTable 新增 PriceQuartile 欄位,並配合 SP 回傳。
NorthwindWithSprocs.xsd。ProductsDataTable → Add > Column。PriceQuartile,型別 Int32。CREATE PROCEDURE GetProductsWithPriceQuartile
AS
SELECT
p.*,
CASE
WHEN p.UnitPrice IS NULL THEN 0
WHEN p.UnitPrice <= (SELECT MIN(UnitPrice) FROM Products) + (SELECT MAX(UnitPrice) - MIN(UnitPrice) FROM Products) * 0.25 THEN 1
WHEN p.UnitPrice <= (SELECT MIN(UnitPrice) FROM Products) + (SELECT MAX(UnitPrice) - MIN(UnitPrice) FROM Products) * 0.50 THEN 2
WHEN p.UnitPrice <= (SELECT MIN(UnitPrice) FROM Products) + (SELECT MAX(UnitPrice) - MIN(UnitPrice) FROM Products) * 0.75 THEN 3
ELSE 4
END AS PriceQuartile
FROM Products p
ProductsTableAdapter → Add Query。GetProductsWithPriceQuartile。GetProductsWithPriceQuartile,回傳 ProductsDataTable。GetProductsWithPriceQuartile() 呼叫 DAL 新方法。擴充 DataTable 結構配合 Stored Procedure,是 Typed DataSet 架構下支援彈性查詢回傳欄位的標準做法,確保型別安全與設計工具相容。