2014-10-07 71 views
-1

在選擇CTE表之前是否有辦法編寫任何類型的代碼?CTE在使用CTE之前執行命令表

DECLARE @TestTable TABLE (ID INT ,name NVARCHAR) 
INSERT INTO @TestTable VALUES (1,'a'),(2,'b'),(1,'c') 
;WITH TempCte(name) 
AS 
(
SELECT name FROM @TestTable WHERE ID = 1 
) 
PRINT 'test' 
SELECT * FROM TempCte 
+1

';'需要在語句的**結尾**處,而不是在中間的某處。 – 2014-10-07 10:29:17

+0

你沒有幫助。 – SubqueryCrunch 2014-10-07 10:34:41

回答

1

不,這是做不到的。如果您參考MSDN則:

A common table expression (CTE) can be thought of as a temporary result set 
that is defined within the execution scope of a SINGLE 
SELECT, INSERT, UPDATE, DELETE, or CREATE VIEW statement. 

所以基本上它持有的CTE結果集的 SELECT/INSERT/UPDATE/DELETE /或CREATE VIEW語句的範圍。任何在該範圍之後寫入的內容都將無法訪問此臨時數據。您可以在此處閱讀更多內容: http://msdn.microsoft.com/en-us/library/ms175972.aspx

+0

謝謝你的回答。 – SubqueryCrunch 2014-10-07 10:50:48