Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

jak przypisać wartość cte do zmiennej?

Nie możesz ustawić wartości za pomocą SET słowo kluczowe w SELECT oświadczenie.Możesz przypisać pola z zapytania do zmiennych w SELECT oświadczenie:

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

W tym przypadku wszystkie pola na liście SELECT powinny być przypisane do zmiennej!

Możesz też przypisać pojedynczy wiersz-pojedyncza kolumna SELECT wynik instrukcji do zmiennej przez SET słowo kluczowe:

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

Nie możesz mieszać powyższych opcji.

Ponadto CTE jest zdefiniowane w zakresie wykonania pojedynczego SELECT , INSERT , UPDATE lub DELETE oświadczenie. (http://msdn.microsoft.com/en-us/library/ms175972.aspx). SET nie jest SELECT /INSERT /UPDATE /DELETE instrukcji, dlatego SQL Server zgłasza błąd składni (CTE nie mogą być zdefiniowane w zakresie instrukcji SET).

Rozwiązanie z przykładowym zapytaniem

;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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz tabelę tymczasową w SQL Server

  2. Zapytanie blokujące serwer SQL

  3. Napisz liczbę z dwoma miejscami po przecinku SQL Server

  4. Dodatek Service Pack 1 dla programu SQL Server 2012 i aktualizacja zbiorcza 1

  5. Jak sprawdzić ustawienia konfiguracji poczty bazy danych w programie SQL Server (T-SQL)