2011-12-18 7 views
5

Sto cercando di eseguire questa istruzione SQL, ma generano l'errore "Sintassi non corretta in prossimità di aggiornamento"SQL Server Case Dichiarazione

Select Case @location 

     When 'MediaFiles' Then update tblMediaFiles set mdActive=1 
     When 'MediaFiles1' Then update tblMediaFiles1 set mdActive=1 
     When 'MediaFiles2' Then update tblMediaFiles2 set mdActive=2 
     Else update tblMediaFiles4 set mdActive=1 

    End 

risposta

8

SQL ha un CASE expression che va dove, ehm, le espressioni sarebbe andato

utilizzare il IF statement invece

IF @location = 'MediaFiles' 
    update tblMediaFiles set mdActive=1 
ELSE IF @location = 'MediaFiles1' 
    update tblMediaFiles1 set mdActive=1 
ELSE IF @location = 'MediaFiles2' 
    update tblMediaFiles2 set mdActive=2 
ELSE 
    update tblMediaFiles4 set mdActive=1 
+0

sì, ha funzionato benissimo con il if else .. grazie – Moe9977

6

Da MSDN:

L'espressione CASE non può essere utilizzata per controllare il flusso di esecuzione di istruzioni Transact-SQL, blocchi di istruzioni, funzioni definite dall'utente e procedure memorizzate . Per un elenco dei metodi di controllo del flusso, vedere Control-of-Flow Language (Transact-SQL).

Si desidera veramente utilizzare una struttura IF-ELSE per questo tipo di logica.