Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

cara menetapkan nilai cte ke variabel

Anda tidak dapat menetapkan nilai dengan SET kata kunci di SELECT pernyataan. Anda dapat menetapkan bidang dari kueri ke variabel di SELECT pernyataan:

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

Dalam hal ini semua file dalam daftar SELECT harus ditetapkan ke variabel!

Atau Anda dapat menetapkan satu baris-satu kolom SELECT hasil pernyataan ke variabel dengan SET kata kunci:

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

Anda tidak dapat mencampur opsi di atas.

Selanjutnya, CTE didefinisikan dalam lingkup eksekusi dari satu SELECT , INSERT , UPDATE , atau DELETE penyataan. (http://msdn.microsoft.com/en-us/library/ms175972.aspx). SET bukan SELECT /INSERT /UPDATE /DELETE pernyataan, inilah mengapa SQL Server melaporkan kesalahan sintaks (CTE tidak dapat ditentukan dalam cakupan pernyataan SET.)

Solusi dengan contoh kueri Anda

;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. Daftar Hierarki Jenis Peristiwa Pemicu di SQL Server 2017

  2. Apa itu prosedur tersimpan?

  3. Cara Memeriksa apakah Kolom yang Dihitung "Bertahan" di SQL Server

  4. Bagaimana cara menghapus semua karakter non-abjad dari string di SQL Server?

  5. Fungsi SQL Server ROUND():Untuk Apa dan Mengapa Anda Harus Peduli?