set xact_abort on go begin transaction go set ANSI_NULLS on go /*************************************** * STORED stp_ComAs_lastComandoByStored * * Ottiene il record dell'ultimo comando inviato ad AS400 dato il nome della stored con Test = 0 * * Steamware, S.E.L. * mod: 2011.03.30 * ****************************************/ create PROCEDURE stp_ComAs_lastComandoByStored ( @Stored NVARCHAR(100) ) AS -- restituisce le righe richieste SELECT TOP 1 * FROM RawData.AS400_Comandi WHERE (Stored = @Stored) AND Test = 0 ORDER BY DataEsecuzione DESC RETURN go commit go drop procedure stp_BORI_caricaDatiNew go set xact_abort on go begin transaction go set ANSI_NULLS on go /***************************************** * STORED stp_BORI_caricaDatiBolla * * richiama la stored di caricamento da AS400 x la bolla indicata * * Steamware, S.E.L. * mod: 2011.04.28 * ****************************************/ alter PROCEDURE stp_BORI_caricaDatiBolla ( @RaggrMagazz NVARCHAR(2) , @GruppoBolle NVARCHAR(1) , @NumeroBolla NVARCHAR(6) , @DataBolla NVARCHAR(8) , @Particolare NVARCHAR(15) ) AS SET NOCOUNT ON; --DECLARE @RaggrMagazz AS NVARCHAR(2) = N'SP' --DECLARE @GruppoBolle AS NVARCHAR(1) = N'0' --DECLARE @NumeroBolla AS NVARCHAR(6) = N'678' --DECLARE @DataBolla AS NVARCHAR(8) = N'20110421' --DECLARE @Particolare AS NVARCHAR(15) = N'P00528536146' -- Prima cancello i dati della se già presenti bolla poi li carico DELETE SP_GMW.RawData.BORI202J WHERE CDMFS = @RaggrMagazz AND GRBOS = @GruppoBolle AND NRBOS = @NumeroBolla AND DTBOS = @DataBolla AND CDARS = @Particolare DECLARE @SQL AS NVARCHAR(4000) DECLARE @SqlOK AS INT; SET @SqlOK = 0; -- ATTENZIONE!!! i parametri non devono essere nulli altrimenti la stringa ritornata è nulla /* Prima estraggo i dati della bolla dal file in AS400 in una tabella temporanea Poi va letta la tabella temporanea per creare i dati per la stampa Odette NON VA BENE, SE ESEGUONO IN DUE LA STAMPA PUO ANDARE IN CONFLITTO */ --IF OBJECT_ID(N'tempdb..##TabTemp') IS NOT NULL -- ##TabTemp Tabella temporanea globale altrimenti non riesco ad usarla -- DROP TABLE ##TabTemp; -- SET @SQL = 'SELECT * INTO ##TabTemp FROM OPENQUERY(P65220DC, BEGIN TRY SET @SQL = 'INSERT INTO SP_GMW.RawData.BORI202J SELECT * FROM OPENQUERY(P65220DC, ''SELECT CDMFS ,GRBOS ,DTBOS ,NRBOS ,CDARS ,NRRGS ,CDINB ,RA1ND ,RA2ND ,CAPND ,CITND ,RASCL ,INDCL ,CAPCL ,LOCCL ,PROCL ,INEND ,CRAGCL ,TELND ,CCDMOL ,CCDPTR ,EPLAVO ,NRC1B ,ECMM01 ,DEPAR ,RCARTC ,PERND ,CCDET1 ,ECDNAE ,ECDNA1 ,EESPMD ,PELDB ,QTCNS FROM POSN_AZI.BORI202J WHERE ATV08 <> ''''A'''' ' -- commemntare le righe successive per estrarre tutto -- Parametri di selezione della bolla SET @SQL = @SQL + ' AND CDMFS = ''''' + @RaggrMagazz + ''''' ' SET @SQL = @SQL + ' AND GRBOS = ''''' + @GruppoBolle + ''''' ' SET @SQL = @SQL + ' AND NRBOS = ' + @NumeroBolla + ' ' SET @SQL = @SQL + ' AND DTBOS = ' + @DataBolla + ' ' SET @SQL = @SQL + ' AND CDARS = ''''' + @Particolare + ''''' ' SET @SQL = @SQL + ''' )'; EXEC sp_executesql @SQL END TRY BEGIN CATCH -- PRINT ERROR_NUMBER() SET @SqlOK = ERROR_NUMBER(); -- Uso RAISERROR mandare in errore la procedura e x per tornare le info -- sull'errore originale che ha portato l'esecuzione nel blocco CATCH --DECLARE @ErrorMessage NVARCHAR(4000); --DECLARE @ErrorSeverity INT; --DECLARE @ErrorState INT; --SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE(); --RAISERROR (@ErrorMessage,@ErrorSeverity,@ErrorState); -- Se non uso RAISERROR la procedura non mi da errore es. se schedulata END CATCH -- MANCA IL TEST SE VA IN ERRORE E IL SALVATAGGIO NEL LOG AS400 -- Memorizzo il comando per verifica T-SQL e l'esito del comando se 0 è OK --INSERT INTO RawData.AS400_Comandi --SELECT GETDATE(), 'stp_CaricaDatiBolladaAs400', @SQL, @SqlOK; -- Carico i dati della Temp table nel file di appoggio -- INSERT INTO SP_GMW.RawData.BORI202J -- SELECT * FROM ##TabTemp RETURN go commit go -- registro versione... INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(361, GETDATE()) GO