SET
で値を設定することはできません SELECT
のキーワード ステートメント。クエリのフィールドをSELECT
の変数に割り当てることができます。 ステートメント:
WITH CTE AS (
/** .. Your Query Here .. **/
)
SELECT
@YourVariable = FieldNameOrSubquery -- In short: Expression
FROM
CTE
この場合、SELECTリスト内のすべてのフィールドを変数に割り当てる必要があります!
または、単一行-単一列を割り当てることができます SELECT
SET
による変数へのステートメントの結果 キーワード:
SET @YourVariable = (SELECT COUNT(1) FROM YourTable).
上記のオプションを混在させることはできません。
さらに、CTEは、単一のSELECT
の実行スコープ内で定義されます。 、INSERT
、UPDATE
、またはDELETE
声明。 (http://msdn.microsoft.com/en-us/library/ms175972.aspx)。 SET
SELECT
ではありません / INSERT
/ UPDATE
/ DELETE
ステートメント、これがSQL Serverが構文エラーを報告する理由です(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'