2013-10-25 12 views
6

Sto tentando di restituire true o false in base a un CASO QUANDO ALLORA istruzione tsql, ma l'unica cosa che appare nel pannello dei risultati è il nome della colonna "IsGeneric ".Come restituire vero o falso da tsql utilizzando il caso quando

Dove sto andando male?

alter proc Storefront.proc_IsProjectGeneric 

@ProjectID INT 
AS 
SET NOCOUNT ON; 

SELECT 'IsGeneric'=CASE WHEN p.[GenericCatalogID] > 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END 
       FROM Storefront.Project p WITH(NOLOCK) 
       WHERE p.ID = @ProjectID; 

SET NOCOUNT OFF; 

risposta

12

Si utilizza apostrofi intorno l'identificativo, il che lo rende una stringa invece.

SELECT IsGeneric = CASE WHEN p.[GenericCatalogID] > 0 THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END 
      FROM Storefront.Project p WITH(NOLOCK) 
      WHERE p.ID = @ProjectID; 
2
SELECT CASE WHEN p.[GenericCatalogID] > 0 
      THEN CAST(1 AS BIT) 
      ELSE CAST(0 AS BIT) 
     END as IsGeneric 
Problemi correlati