Bạn không thể đặt giá trị bằng SET từ khóa trong SELECT Bạn có thể gán các trường từ truy vấn cho các biến trong SELECT tuyên bố:
WITH CTE AS (
/** .. Your Query Here .. **/
)
SELECT
@YourVariable = FieldNameOrSubquery -- In short: Expression
FROM
CTE
Trong trường hợp này, tất cả các tệp trong danh sách CHỌN phải được gán cho một biến!
Hoặc bạn có thể chỉ định một cột một hàng duy nhất SELECT kết quả của câu lệnh cho một biến bởi SET từ khóa:
SET @YourVariable = (SELECT COUNT(1) FROM YourTable).
Bạn không thể kết hợp các tùy chọn trên.
Hơn nữa, CTE được xác định trong phạm vi thực thi của một SELECT duy nhất , INSERT , UPDATE hoặc DELETE tuyên bố. (https://msdn.microsoft.com/en-us/library/ms175972.aspx). SET không phải là SELECT / INSERT / UPDATE / DELETE , đây là lý do tại sao SQL Server báo cáo lỗi cú pháp (không thể xác định CTE trong phạm vi của câu lệnh SET.)
Giải pháp với truy vấn mẫu của bạn
;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'