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ố. (http://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'