2017-11-15 1 views
2

Ich versuche zu erhalten, fragen unten basierend auf Rolle wie diese, aber ich bin immer Fehler wie dieseversucht, die Tabelle einzelne Spaltendaten mit Schaltergehäusen Aussage

falsche Syntax in der Nähe von ‚=‘.

Ich bin nicht sicher, warum ich diese Störung erhalte

unten ist meine Abfrage

CREATE procedure [dbo].[getName]    
    @AccountId int,  
    @role varchar(50), 
    @Activated_By nvarchar(100)    
AS    
BEGIN   

    SELECT Name 
    FROM  pass_activationinfo 
    WHERE 
     CASE WHEN @role = 'Admin' 
      THEN account_id = @AccountId 
      ELSE Activated_By = @Activated_By 
     END 
END 

Antwort

5

Erste Variante

SELECT Name 
FROM  pass_activationinfo 
WHERE 
     (@role = 'Admin' AND account_id = @AccountId) 
    OR (@role <> 'Admin' AND Activated_By = @Activated_By) 

Zweite Variante

SELECT Name 
FROM  pass_activationinfo 
WHERE 
    CASE 
     WHEN @role = 'Admin' AND account_id = @AccountId THEN 1 
     WHEN @role <> 'Admin' AND Activated_By = @Activated_By THEN 1 
     ELSE 0 
    END = 1 
+0

Vielen Dank für Ihre Unterstützung –

2

Ändern Sie den Fall und verwenden oder anstelle

CREATE procedure [dbo].[getName]    
    @AccountId int,  
    @role varchar(50), 
    @Activated_By nvarchar(100)    
AS    
BEGIN   

    SELECT 
     Name 
    FROM pass_activationinfo 
    WHERE 
     (
      @role = 'Admin' 
      AND 
      account_id = @AccountId 
     ) 
     OR 
     (
      @role <> 'Admin' 
      AND 
      Activated_By = @Activated_By 
     ) 


END 
+0

Vielen Dank für Ihre Unterstützung verwenden –

1

können Sie diesen

SELECT Name 
    FROM  pass_activationinfo 
    WHERE 
     ((@role = 'Admin' 
      and account_id = @AccountId) 
      or Activated_By = @Activated_By) 
+0

Vielen Dank für Ihre Unterstützung –

Verwandte Themen