表變量和局部臨時表非常相似,除了能實現相同的功能外,它們主要有兩點不同,首先聲明表變量是用DECLARE語句,而不是CREATE TABLE語句,第二點是表變量也只對創建它的會話可見,但允許訪問的范圍更小,它只對當前批處理可見,它對調用堆棧中當前批處理的內部批處理是不可見的,對會話中隨后的批處理也是不可見的。
下面是使用表變量的示例和代碼。
-- 表變量DECLARE @MyOrderTotalsByYear TABLE( ID INT NOT NULL PRIMARY KEY, Val NVARCHAR(50) NOT NULL);INSERT INTO @MyOrderTotalsByYear( ID, Val )SELECT YEAR(orders.orderdate)AS orderdate,SUM(orderdetails.qty) AS qty FROM Sales.Orders AS ordersLEFT JOIN Sales.OrderDetails AS orderdetails ON orders.orderid = orderdetails.orderidGROUP BY YEAR(orders.orderdate);-- 查詢表變量SELECT * FROM @MyOrderTotalsByYear;
查詢結果:
新聞熱點
疑難解答