Pomocí SET
nemůžete nastavit hodnoty klíčové slovo v SELECT
Pole z dotazu můžete buď přiřadit proměnným v SELECT
prohlášení:
WITH CTE AS (
/** .. Your Query Here .. **/
)
SELECT
@YourVariable = FieldNameOrSubquery -- In short: Expression
FROM
CTE
V tomto případě by měla být všechna pole v seznamu SELECT přiřazena proměnné!
Nebo můžete přiřadit jeden řádek-jeden sloupec SELECT
výsledek příkazu do proměnné pomocí SET
klíčové slovo:
SET @YourVariable = (SELECT COUNT(1) FROM YourTable).
Výše uvedené možnosti nelze kombinovat.
Kromě toho je CTE definováno v rozsahu provádění jediného SELECT
, INSERT
, UPDATE
nebo DELETE
prohlášení. (http://msdn.microsoft.com/en-us/library/ms175972.aspx). SET
není SELECT
/INSERT
/UPDATE
/DELETE
SQL Server proto hlásí chybu syntaxe (CTE nelze definovat v rozsahu příkazu SET.)
Řešení s vaším příkladem dotazu
;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'