none
stored procedure con 2 update RRS feed

  • Domanda

  • Ciao a tutti, sono alle prime armi qualcuno mi può aiutare nella creazione di una stored procedure che vada ad aggiornare i dati in 2 tabelle diverse? Questo è quello che dovrebbe fare:

    UPDATE QWNEWS SET dataInVal = @dataInVal, dataFiVal = @dataFiVal  WHERE (ID = @ID)
    UPDATE QWNEWSLIN SET titolo = @titolo, notizia = @notizia WHERE (ID = @ID) AND (lingua = @lingua)

    qualche suggerimento? Pleaseeeeeee

    mercoledì 27 luglio 2011 11:25

Risposte

  • puoi inserire le 2 query nella stored separandole da un ;

    meglio ancora puoi fare la stored con una transazione che ti assicuri che o tutte le 2 operazioni vanno a buon fine oppore nessuna tipo (non sò se il tipo di dati di lingua e id sia corretto)

    CREATE PROCEDURE [dbo].[miastored]

    @id smallint,
    @lingua tinyint

    AS

    SET SET XACT_ABORT ON

    BEGIN TRANSACTION

    UPDATE QWNEWS SET dataInVal = @dataInVal, dataFiVal = @dataFiVal  WHERE (ID = @ID);
    UPDATE QWNEWSLIN SET titolo = @titolo, notizia = @notizia WHERE (ID = @ID) AND (lingua = @lingua)

    IF @@ERROR = 0
     COMMIT TRANSACTION
    ELSE
     ROLLBACK TRANSACTION
    • Contrassegnato come risposta fabio84 mercoledì 27 luglio 2011 12:35
    • Contrassegno come risposta annullato fabio84 mercoledì 27 luglio 2011 13:40
    • Contrassegnato come risposta fabio84 mercoledì 27 luglio 2011 14:01
    mercoledì 27 luglio 2011 12:12
  • CREATE PROCEDURE modifica_news
        -- Add the parameters for the stored procedure here
        @id int,
        @lingua char,
        @dataInVal smalldatetime,
        @dataFiVal smalldatetime,
        @dataCreaz datetime,
        @titolo varchar,
        @notizia varchar
       
    AS
     SET XACT_ABORT ON

    BEGIN TRANSACTION
        UPDATE QWNEWS SET QWNEWS.dataInVal = @dataInVal, QWNEWS.dataFiVal = @dataFiVal WHERE (QWNEWS.ID = @ID);
        UPDATE QWNEWSLIN SET QWNEWSLIN.titolo = @titolo, QWNEWSLIN.notizia = @notizia WHERE (QWNEWSLIN.ID = @ID) AND (QWNEWSLIN.lingua = @lingua)

    IF @@ERROR = 0
     COMMIT TRANSACTION
    ELSE
     ROLLBACK TRANSACTION
    • Contrassegnato come risposta fabio84 mercoledì 27 luglio 2011 14:01
    mercoledì 27 luglio 2011 13:55

Tutte le risposte

  • puoi inserire le 2 query nella stored separandole da un ;

    meglio ancora puoi fare la stored con una transazione che ti assicuri che o tutte le 2 operazioni vanno a buon fine oppore nessuna tipo (non sò se il tipo di dati di lingua e id sia corretto)

    CREATE PROCEDURE [dbo].[miastored]

    @id smallint,
    @lingua tinyint

    AS

    SET SET XACT_ABORT ON

    BEGIN TRANSACTION

    UPDATE QWNEWS SET dataInVal = @dataInVal, dataFiVal = @dataFiVal  WHERE (ID = @ID);
    UPDATE QWNEWSLIN SET titolo = @titolo, notizia = @notizia WHERE (ID = @ID) AND (lingua = @lingua)

    IF @@ERROR = 0
     COMMIT TRANSACTION
    ELSE
     ROLLBACK TRANSACTION
    • Contrassegnato come risposta fabio84 mercoledì 27 luglio 2011 12:35
    • Contrassegno come risposta annullato fabio84 mercoledì 27 luglio 2011 13:40
    • Contrassegnato come risposta fabio84 mercoledì 27 luglio 2011 14:01
    mercoledì 27 luglio 2011 12:12
  • alla GRANDE!!! Grazie tante Alessandro!! :)
    mercoledì 27 luglio 2011 12:35
  • ehm... ho un problema questa è la SP
    CREATE PROCEDURE modifica_news 
    	-- Add the parameters for the stored procedure here
    	@id int,
    	@lingua char,
    	@dataInVal date,
    	@dataFiVal date,
    	@dataCreaz datetime,
    	@titolo varchar,
    	@notizia varchar
    	
    AS
     SET XACT_ABORT ON
    
    BEGIN TRANSACTION
    	UPDATE QWNEWS SET QWNEWS.dataInVal = @dataInVal, QWNEWS.dataFiVal = @dataFiVal WHERE (QWNEWS.ID = @ID);
    	UPDATE QWNEWSLIN SET QWNEWSLIN.titolo = @titolo, QWNEWSLIN.notizia = @notizia WHERE (QWNEWSLIN.ID = @ID) AND (QWNEWSLIN.lingua = @lingua)
    
    IF @@ERROR = 0
     COMMIT TRANSACTION
    ELSE
     ROLLBACK TRANSACTION
    END
    
    
    

    se la eseguo mi da questo errore

    Messaggio 102, livello 15, stato 1, procedura modifica_news, riga 27
    Sintassi non corretta in prossimità di 'END'.

    Dove sbaglio?

    mercoledì 27 luglio 2011 13:40
  • CREATE PROCEDURE modifica_news
        -- Add the parameters for the stored procedure here
        @id int,
        @lingua char,
        @dataInVal smalldatetime,
        @dataFiVal smalldatetime,
        @dataCreaz datetime,
        @titolo varchar,
        @notizia varchar
       
    AS
     SET XACT_ABORT ON

    BEGIN TRANSACTION
        UPDATE QWNEWS SET QWNEWS.dataInVal = @dataInVal, QWNEWS.dataFiVal = @dataFiVal WHERE (QWNEWS.ID = @ID);
        UPDATE QWNEWSLIN SET QWNEWSLIN.titolo = @titolo, QWNEWSLIN.notizia = @notizia WHERE (QWNEWSLIN.ID = @ID) AND (QWNEWSLIN.lingua = @lingua)

    IF @@ERROR = 0
     COMMIT TRANSACTION
    ELSE
     ROLLBACK TRANSACTION
    • Contrassegnato come risposta fabio84 mercoledì 27 luglio 2011 14:01
    mercoledì 27 luglio 2011 13:55