現代應用程式頻繁需要將資料集合(而非單一純量值)傳遞給資料庫邏輯。這在 C#、Java 等語言中是基本功能(List、Array、DataTable),但 T-SQL 長期缺乏原生支援。
| 版本 | 方案 | 缺點 |
|---|---|---|
| SQL Server 2000 | OPENXML + VARCHAR 傳遞 XML 字串 | 需手動組裝 XML、記憶體佔用大、需 sp_xml_preparedocument/sp_xml_removedocument 管理解析器 |
| SQL Server 2005 | 原生 XML 資料類型 + XQuery | 仍需序列化為 XML 字串、伺服器端剖析 (Shredding) 成關聯格式、效能開銷大、程式碼複雜 |
SqlParameter 直接接受 DataTable、DbDataReader、IEnumerable<SqlDataRecord>,客戶端程式碼極簡潔。表值參數將「容器資料結構傳遞給常式」這一通用程式設計需求,終於以原生、高效、型別安全的方式引入 T-SQL,徹底取代 XML 繞道方案。
下一篇將深入實作細節、限制條件與最佳實務範例。