105 lines
3.0 KiB
Transact-SQL
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
|