Files
2014-03-21 10:20:06 +01:00

105 lines
3.0 KiB
Transact-SQL

/***************************************
* STORED stp_batch_RapQual_S01
*
* Esegue lo step 1 (caricamento dati RAW da AS400) per la tab dei rapporti di qualità
*
* Steamware, S.E.L.
* mod: 2010.09.23
*
****************************************/
CREATE PROCEDURE BatchQueue.stp_batch_RapQual_S01
(
@minData DATETIME
)
AS
SET NOCOUNT ON;
-- BOZZA DA TESTARE A CURA MAZZUCCONI!!!
-- Caricamento Rapporti qualità Materia Prima
-- FILE XOGIX00F
-- LIBRERIA TEST MAZZT_DTV3
-- LIBRERIA EFFETTIVA TEKAL TEKA_DATV3
-- LIBRERIA EFFETTIVA POSS POSN_DATV3
/*
XRPQLN AS nRapQual
XRPQLD AS DataRapQual
XNRETI AS ProgUDC
XCDFOR AS CodFor
XCDTER AS DestTerz
XCDPAR AS CodLega
XDTPRO AS DataPrelFus
XTRPRO AS TurnoPrelFus
XQTPRO AS Qta
XDESMT AS DestLega
XMATSC AS LegaScaric
XBENQL AS BenesQual
WHERE XRPQLN <> 0 -- Se il n. rapporto di qualità è zero non sono cartellini materia prima
L'UPDATE FUNZIONA VERSO AS400
*/
DECLARE @SQL AS NVARCHAR(4000);
DECLARE @SqlOK AS INT;
DECLARE @As400File AS NVARCHAR(50) = '';
DECLARE @As400Linked AS NVARCHAR(50) = ''; -- Linked Server AS400
DECLARE @dataAs400 AS VARCHAR(8);
SET @dataAs400 = (SELECT dbo.dateToAsFormat(@minData));
SET @SqlOK = 0;
-- In base al nome del DB e della stored recupero il Linked Server e file di AS400 27/06/2013
SET @As400Linked = ( SELECT dbo.f_getLikedAS400(DB_NAME()) );
SET @As400File = ( SELECT dbo.f_getLibreriaAS400 ( DB_NAME() , OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID) ) )
BEGIN TRY
-- svuoto tab raw attuale
TRUNCATE TABLE RawData.XOGIX00F;
-- Leggo tutti gli UDC dei rapporti di qualità a partire dalla data richiesta
-- escludendo quelli con Numero Rapporto di qualità a zero ( non sono rapporti di qualità )
-- CREO L'ISTRUZIONE SQL DI INSERT PARAMETRICA
SET @SQL =
N'INSERT INTO RawData.XOGIX00F
SELECT XRPQLN
,XRPQLD
,XNRETI
,XCDFOR
,XCDTER
,XCDPAR
,XDTPRO
,XTRPRO
,XQTPRO
,XDESMT
,XMATSC
,XBENQL
FROM OPENQUERY(' + @As400Linked
SET @SQL = @SQL + N', ''SELECT * FROM ' + @As400File
SET @SQL = @SQL + ' WHERE XRPQLN <> 0 AND XRPQLD >= ' + @dataAs400 + ' '' ) '
-- Eseguo il comando T-SQL verso AS400 e testo se OK
-- EXEC @SqlOK = sp_executesql @SQL se faccio così non mi valorizza la variabile se da errore
EXEC sp_executesql @SQL;
END TRY
BEGIN CATCH
-- nel caso di errore ne salvo il numero
SET @SqlOK = ERROR_NUMBER(); -- PRINT ERROR_NUMBER()
END CATCH
-- Memorizzo il comando per verifica T-SQL e l'esito del comando se 0 è OK
INSERT INTO RawData.AS400_Comandi
SELECT GETDATE(), 'stp_batch_RapQual_S01', @SQL, @SqlOK;
-- è possibile sollevare un RAISERROR ??? come si comporta poi il programma?
-- NON SI FANNO RAISE ERROR E NON SI RESTITUISCE CODICE!!!!!
RETURN