sql >> Database teknologi >  >> RDS >> Sqlserver

hvordan man tildeler cte-værdi til variabel

Du kan ikke indstille værdier med SET søgeord i SELECT sætning. Du kan enten tildele felterne fra forespørgslen til variabler i SELECT erklæring:

WITH CTE AS (
  /** .. Your Query Here .. **/
)
SELECT
  @YourVariable = FieldNameOrSubquery -- In short: Expression
FROM
  CTE

I dette tilfælde skal alle filer i SELECT-listen tildeles en variabel!

Eller du kan tildele en enkelt række-enkelt kolonne VÆLG sætningens resultat til en variabel med SET søgeord:

SET @YourVariable = (SELECT COUNT(1) FROM YourTable).

Du kan ikke blande ovenstående muligheder.

Ydermere er CTE defineret inden for eksekveringsomfanget af en enkelt SELECT , INSERT , OPDATERING eller SLET udmelding. (http://msdn.microsoft.com/en-us/library/ms175972.aspx). SET er ikke en SELECT /INDSÆT /OPDATERING /SLET Dette er grunden til, at SQL Server rapporterer en syntaksfejl (CTE'er kan ikke defineres inden for SET-sætningens omfang.)

Løsningen med din eksempelforespørgsel

;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. Udfør native sql med hibernate

  2. MySQL REGEXP eksempler

  3. Forbindelsen hænger efter tidspunktet for inaktivitet

  4. Oracle 10g - optimer WHERE IS NOT NULL