單一 INSERT 陳述式插入多列資料。
CREATE TABLE #a (Column1 nvarchar(max), Column2 nvarchar(max));
INSERT INTO #a VALUES (('1','1'), ('2','2'));
SELECT * FROM #a;
強制查詢優化器使用索引搜尋 (Index Seek) 作為唯一存取路徑。
SELECT * FROM t WITH (FORCESEEK) WHERE i IN (@p1,@p2,@p3,@p4,@p5);
ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = {80|90|100} 取代 sp_dbcmptlevel。80=SQL 2000, 90=SQL 2005, 100=SQL 2008。
CREATE TYPE LocationTableType AS TABLE (LocationName VARCHAR(50), CostRate INT);
參考使用者定義表類型,傳遞多行資料。範例:
CREATE PROCEDURE usp_InsertProductionLocation @TVP LocationTableType READONLY
AS INSERT INTO [Production].[Location] ([Name],[CostRate],[Availability],[ModifiedDate])
SELECT *, 0, GETDATE() FROM @TVP;
TVP 唯讀,不可作 OUTPUT 參數。
基於來源資料聯接結果,在目標表上執行 INSERT/UPDATE/DELETE。語法完整支援 OUTPUT 子句。
MERGE Production.ProductInventory AS Pi
USING (SELECT ProductID, SUM(OrderQty) FROM Sales.SalesOrderDetail ... ) AS src
ON (pi.ProductID = src.ProductID)
WHEN MATCHED AND pi.Quantity - src.OrderQty <> 0 THEN UPDATE SET pi.Quantity = pi.Quantity - src.OrderQty
WHEN MATCHED AND pi.Quantity - src.OrderQty = 0 THEN DELETE;
典型銷售出貨扣庫存案例,單一陳述式完成更新與刪除。
SQL Server 2008 T-SQL 增強提升查詢效率與開發生產力,配合 Visual Studio 2008 發布,助力企業級應用快速建置。