a6d7ea0b2f
versione TK 2.4 inclusione schema voc x tabella lingue e vocabolario
91 lines
3.3 KiB
Transact-SQL
91 lines
3.3 KiB
Transact-SQL
/***************************************
|
|
* STORED stp_processaCodaConsumoMP
|
|
*
|
|
* Processa la coda dei consumo di UDC di MP e chiaam procedura x salvataggio dato su AS400
|
|
*
|
|
* Steamware
|
|
* mod:
|
|
*
|
|
****************************************/
|
|
CREATE PROCEDURE [BatchQueue].[stp_processaCodaConsumoMP]
|
|
(
|
|
@ExecBatchInter BIT -- 0 Eseguita in Batch , 1 in Interattivo
|
|
)
|
|
AS
|
|
|
|
-- faccio una query con un cursore x processare tutte le righe da inviare ad AS400..
|
|
DECLARE @UDC NVARCHAR(50) -- UDC SQL
|
|
DECLARE @XRPQLN INT -- UDC
|
|
DECLARE @XNRETI NVARCHAR(10) -- Progr UDC AS400
|
|
DECLARE @XDTPRO INT -- DataPrelievo
|
|
DECLARE @XTRPRO NVARCHAR(5) -- Turno Prelievo
|
|
DECLARE @XDESMT NVARCHAR(3) -- Destinazione Lega
|
|
DECLARE @XCDTER NVARCHAR(6) -- Cod. Terzista
|
|
|
|
DECLARE @ScritturaASOK AS INT = 0;
|
|
DECLARE @InteroCicloASOK AS INT = 0; -- memorizzo errore nel ciclo WHILE
|
|
|
|
-- Dichiaro e carico il cursore
|
|
DECLARE UdcMpList CURSOR LOCAL FOR
|
|
SELECT UDC FROM dbo.AS400_BatchConsumoMP WHERE DataInvioAs IS NULL
|
|
|
|
OPEN UdcMpList
|
|
FETCH NEXT FROM UdcMpList
|
|
INTO @UDC
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
-- controllo ci sia la riga
|
|
IF (SELECT COUNT(UDC) FROM AS400_BatchConsumoMP WHERE UDC=@UDC) > 0
|
|
BEGIN
|
|
-- carico valori che mi servono
|
|
SELECT @XRPQLN=rq.nRapQual, @XNRETI=rq.ProgUDC, @XDTPRO=bcu.DataPrelFus, @XTRPRO=bcu.TurnoPrelFus,
|
|
@XDESMT=bcu.DestLega, @XCDTER=bcu.DestTerz
|
|
FROM dbo.AS400_BatchConsumoMP as bcu
|
|
INNER JOIN RilPro.RapQual as rq ON bcu.UDC = rq.UDC
|
|
WHERE bcu.UDC=@UDC
|
|
|
|
-- BEGIN TRAN qui non va messa perchè se verso AS400 le transazioni non sono gestite
|
|
-- MANCA IL CONTROLLO SE L'AGGIORNAMENTO E' STATO OK
|
|
EXECUTE @ScritturaASOK = BatchQueue.stp_consumaMP @XRPQLN ,@XNRETI ,@XDTPRO ,@XTRPRO ,@XDESMT ,@XCDTER
|
|
|
|
-- registro la data del movimento BATCH solo se stp_consumaMP ritorna OK
|
|
-- Così non aggiorna la tabella MA L'UTENTE NON SI ACCORGE DI NULLA!!!
|
|
IF @ScritturaASOK = 0
|
|
UPDATE dbo.AS400_BatchConsumoMP SET DataInvioAs = GETDATE() WHERE UDC = @UDC
|
|
ELSE
|
|
SET @InteroCicloASOK = @ScritturaASOK
|
|
|
|
FETCH NEXT FROM UdcMpList INTO @UDC
|
|
END
|
|
END
|
|
CLOSE UdcMpList
|
|
DEALLOCATE UdcMpList
|
|
|
|
-- aggiunta per dare errore se schedulata!!! GCARLO
|
|
-- Se la scrittura su AS400 ha dato errore ed è stata eseguita in batch sollevo l'errore
|
|
-- così anche il batch da errore
|
|
IF @InteroCicloASOK <> 0 AND @ExecBatchInter = 0
|
|
BEGIN
|
|
DECLARE @ErrorMessage NVARCHAR(4000);
|
|
DECLARE @ErrorSeverity INT = 16;
|
|
DECLARE @ErrorState INT = 1;
|
|
|
|
IF @InteroCicloASOK < 0 -- errore nella verifica della scrittura su AS400
|
|
SELECT @ErrorMessage = 'Errore nella VERIFICA di scrittura su AS400 in stp_consumaMP'
|
|
ELSE
|
|
SELECT -- nn so se riesce a leggere i dati dell'errore cmq lo solleva
|
|
@ErrorMessage = ERROR_MESSAGE()+ ' '+ CONVERT( VARCHAR(10),ERROR_NUMBER()),
|
|
@ErrorSeverity = ISNULL(ERROR_SEVERITY(),16),
|
|
@ErrorState = ERROR_STATE();
|
|
|
|
-- sollevo errore per mandare in errore la procedura schedulata
|
|
RAISERROR (@ErrorMessage, -- Message text.
|
|
@ErrorSeverity, -- Severity.
|
|
@ErrorState -- State.
|
|
);
|
|
END
|
|
RETURN
|
|
|
|
|