sql >> Databáze >  >> RDS >> Sqlserver

jak přiřadit hodnotu cte proměnné

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'


  1. datetime vs smalldatetime v SQL Server:Jaký je rozdíl?

  2. MySQL odstraňuje nenumerické znaky pro porovnání

  3. MySQL AUTO_INCREMENT se nevrací

  4. Chyba syntaxe u uživatele nebo v jeho blízkosti při přidávání omezení Postgres