आप SET
. के साथ मान सेट नहीं कर सकते SELECT
. में कीवर्ड स्टेटमेंट। आप SELECT
. में क्वेरी से वेरिएबल के लिए फ़ील्ड असाइन कर सकते हैं कथन:
WITH CTE AS (
/** .. Your Query Here .. **/
)
SELECT
@YourVariable = FieldNameOrSubquery -- In short: Expression
FROM
CTE
इस मामले में, SELECT सूची की सभी फ़ाइलें एक वैरिएबल को असाइन की जानी चाहिए!
या आप एक एकल पंक्ति-एकल कॉलम assign असाइन कर सकते हैं SELECT
SET
. द्वारा एक चर के लिए कथन का परिणाम कीवर्ड:
SET @YourVariable = (SELECT COUNT(1) FROM YourTable).
आप उपरोक्त विकल्पों को नहीं मिला सकते हैं।
इसके अलावा, सीटीई को एकल SELECT
. के निष्पादन दायरे में परिभाषित किया गया है , INSERT
, UPDATE
, या DELETE
बयान। (http://msdn.microsoft.com/en-us/library/ms175972.aspx)। SET
SELECT
नहीं है /INSERT
/UPDATE
/DELETE
कथन, यही कारण है कि SQL सर्वर एक सिंटैक्स त्रुटि की रिपोर्ट करता है (CTE को SET कथन के दायरे में परिभाषित नहीं किया जा सकता है।)
आपकी उदाहरण क्वेरी के साथ समाधान
;WITH CTEima(PersonId,IsEmployeeActive) AS
( SELECT COUNT(*)
FROM custom.viwSSAppsEmpMasterExtended vem
WHERE vem.SupervisorPersonId = @p_PersonId
UNION ALL
SELECT CTEima.IsEmployeeActive
FROM Custom.viwSSAppsEmpMasterExtended vem
JOIN CTEima on CTEima.PersonId = vem.SupervisorPersonId
)
SELECT @v_IsManager = COUNT(*)
FROM CTEima
WHERE IsEmployeeActive = 'Y'