2009-04-20 11 views
9

Mi chiedo se è possibile avere più istruzioni di aggiornamento in una procedura di memorizzazioneistruzioni di aggiornamento multiple in uno StoredProcedure

Qualcosa di simile a questo:

Update Table1 set field1 = @new_value where id = @table1_id 

Update Table2 set field2 = @new_value where id = @table2_id 

Update Table3 set field3 = @new_value where id = @table3_id 

In questo momento sto eseguirle separatamente ma in quanto sono usati solo insieme Mi chiedo se potrebbero essere collocati in un solo SP.

+1

questo è uno dei motivi per utilizzare stored procedure, aggiungere una transazione e gestione degli errori e si dispone di una buona soluzione –

risposta

22

Sì, è possibile:

CREATE PROCEDURE prc_update (@table1_id INT, @table2_id INT, @table3_id INT, @new_value INT) 
AS 
BEGIN 
     UPDATE Table1 
     SET  field1 = @new_value 
     WHERE id = @table1_id 

     UPDATE Table2 
     SET  field2 = @new_value 
     WHERE id = @table2_id 

     UPDATE Table3 
     SET  field3 = @new_value 
     WHERE id = @table3_id 
END 
+0

wow che è leggermente imbarazzante, ovviamente ho provato questo e ho continuato a ottenere errori di sintassi e in qualche modo trarre la conclusione che non era possibile in questo modo, appena provato di nuovo e funziona perfettamente! Grazie :) –

+0

@Il napster vero: segneresti la risposta di Quassnoi come risposta? Grazie. – Sung

8

Sì, funziona benissimo.

mettere anche questo nella stored procedure prima che gli aggiornamenti:

set nocount on 

questo mantiene le stored procedure di creare set di risultati per le query senza un risultato. In caso contrario, ogni aggiornamento produrrà un set di risultati vuoto che verrà rinviato al client.

6

Si consiglia di includere anche queste istruzioni nelle transazioni in modo che, in caso di esito negativo, vengano tutte annullate.

Problemi correlati