a6d7ea0b2f
versione TK 2.4 inclusione schema voc x tabella lingue e vocabolario
141 lines
5.7 KiB
Transact-SQL
141 lines
5.7 KiB
Transact-SQL
|
|
|
|
/***************************************
|
|
* STORED stp_consumaMP
|
|
*
|
|
* Salva il movimento di consumo dell'UDC di MP indicato
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.10.12
|
|
*
|
|
****************************************/
|
|
CREATE PROCEDURE [BatchQueue].[stp_consumaMP]
|
|
(
|
|
@XRPQLN INT, -- è il num rap qualità
|
|
@XNRETI NVARCHAR(10), -- è il numUdc prog AS400
|
|
@XDTPRO INT, -- data 8 cifre aaaammgg Data Prelievo Fusione
|
|
@XTRPRO NVARCHAR(5), -- turno prelievo ( solo se interno )
|
|
@XDESMT NVARCHAR(3), -- destinatario int/terzista ( F01 / T01 )
|
|
@XCDTER NVARCHAR(6) -- cod terzista ( Anagrafico Depositi )
|
|
)
|
|
AS
|
|
|
|
-- Salva consumo cartellini Rapporti qualità Materia Prima
|
|
|
|
-- FILE XOGIX00F
|
|
|
|
-- LIBRERIA TEST MAZZT_DTV3
|
|
-- LIBRERIA EFFETT. TEKAL TEKA_DATV3
|
|
-- LIBRERIA EFFETT. SP POSN_DATV3
|
|
|
|
/* PER TESTARE
|
|
|
|
DECLARE @XRPQLN INT, -- è il num rap qualità
|
|
@XNRETI NVARCHAR(10), -- è il numUdc prog
|
|
@XDTPRO INT, -- data 8 cifre aaaammgg
|
|
@XTRPRO NVARCHAR(5), -- turno
|
|
@XDESMT NVARCHAR(3), -- destinatario int/terzista
|
|
@XCDTER NVARCHAR(6) -- cod terzista
|
|
|
|
SET @XRPQLN = 905793 -- è il num rap qualità
|
|
SET @XNRETI = 'U100548151' -- è il numUdc prog
|
|
SET @XDTPRO = 20100723 -- data 8 cifre aaaammgg
|
|
SET @XTRPRO = 'S' -- turno
|
|
SET @XDESMT = 'F01' -- destinatario int/terzista
|
|
SET @XCDTER = '' -- cod terzista
|
|
*/
|
|
|
|
DECLARE @SQL AS NVARCHAR(4000);
|
|
DECLARE @SqlOK AS INT;
|
|
DECLARE @As400File AS NVARCHAR(50) = '';
|
|
DECLARE @As400Linked AS NVARCHAR(50) = ''; -- Linked Server AS400
|
|
|
|
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
|
|
|
|
-- TEST per generare errore
|
|
-- SET @XDTPRO = 99999920100723 -- data 8 cifre aaaammgg
|
|
|
|
-- ==============================================================
|
|
-- Creo l'istruzione SQL e faccio chiamata su AS400
|
|
-- Aggiorno solo se su As400 Legascar è N XMATSC = 'N' mettendo poi S
|
|
-- indico su As400 che il cartellino UDC della Lega è stato scaricato
|
|
-- ==============================================================
|
|
|
|
SET @SQL = N'UPDATE OPENQUERY(' + @As400Linked
|
|
SET @SQL = @SQL + N', ''SELECT * FROM ' + @As400File
|
|
|
|
SET @SQL = @SQL + ' WHERE XRPQLN = ' + CAST(@XRPQLN AS NVARCHAR(20)) -- Numero Rapporto Qualita
|
|
SET @SQL = @SQL + ' AND XMATSC = ''''N'''' AND XNRETI = ''''' + @XNRETI + ''''''' ) ' -- non ancora scaricato ('N') e Numero UDC AS400
|
|
|
|
SET @SQL = @SQL + 'SET XDTPRO = ' + CAST(@XDTPRO AS NVARCHAR(8)) -- Data
|
|
SET @SQL = @SQL + ', XTRPRO = ''' + @XTRPRO + '''' -- Turno
|
|
SET @SQL = @SQL + ', XDESMT = ''' + @XDESMT + '''' -- Destinatario
|
|
SET @SQL = @SQL + ', XMATSC = ''S''' -- Flag Lega Scaricata
|
|
SET @SQL = @SQL + ', XCDTER = ''' + @XCDTER + ''''; -- Cod Terzista
|
|
|
|
-- Eseguo il comando T-SQL verso AS400
|
|
EXEC sp_executesql @SQL;
|
|
|
|
-- EXEC @SqlOK = sp_executesql @SQL se faccio così non mi valorizza la variabile se da errore
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
-- se entro nel CATCH c'è stato un errore quindo lo memorizzo
|
|
SET @SqlOK = ERROR_NUMBER();
|
|
|
|
END CATCH
|
|
|
|
-- Test di lettura - Modifica 14/06/2011
|
|
IF @SqlOK = 0 -- Se sp_executesql è Ok
|
|
BEGIN
|
|
|
|
SET @SqlOK = -1 -- lo rimetto a 0 solo se lettura è OK
|
|
-- Controllo che l'UDC sia stato scaricato in modo corretto su AS400
|
|
DECLARE @SQL2 AS NVARCHAR(4000);
|
|
DECLARE @LettoOk AS INT = 99;
|
|
|
|
SET @SQL2 = N'SELECT @LettoOk = COUNT(*) FROM OPENQUERY(' + @As400Linked
|
|
SET @SQL2 = @SQL2 + N', ''SELECT XRPQLN FROM ' + @As400File
|
|
|
|
SET @SQL2 = @SQL2 + N' WHERE XRPQLN = ' + CAST(@XRPQLN AS NVARCHAR(20)) -- Numero Rapporto Qualita
|
|
SET @SQL2 = @SQL2 + N' AND XNRETI = ''''' + @XNRETI + '''''' -- Numero UDC AS400
|
|
SET @SQL2 = @SQL2 + N' AND XMATSC = ''''N''''' -- non ancora scaricato ('N')
|
|
SET @SQL2 = @SQL2 + N''' ) '
|
|
|
|
EXEC sp_executesql @SQL2, N'@LettoOk INT OUTPUT', @LettoOk OUTPUT;
|
|
|
|
-- Se trovo record UDC non scaricato lo imposto come errore -2 altrimenti tutto OK
|
|
IF @LettoOk = 0 SET @SqlOK = 0 ELSE SET @SqlOK = -2
|
|
END
|
|
-- Fine Modifica - Modifica 14/06/2011
|
|
|
|
-- Memorizzo il comando per verifica T-SQL e l'esito del comando se 0 è OK
|
|
INSERT INTO RawData.AS400_Comandi
|
|
SELECT GETDATE(), 'stp_consumaMP', @SQL, @SqlOK;
|
|
|
|
-- è possibile sollevare un RAISERROR ??? come si comporta poi il programma?
|
|
-- NON SI FANNO RAISE ERROR!!!!!
|
|
|
|
RETURN @SqlOK;
|
|
|
|
/* -- sono tutte su DB di test
|
|
SELECT XRPQLN, XNRETI , XDTPRO, XTRPRO, XDESMT, XMATSC, XCDTER
|
|
FROM OPENQUERY( AS400XXXX, 'SELECT * FROM MAZZT_DTV3.XOGIX00F WHERE XRPQLN = 905793 AND XNRETI = ''U100548151'' ')
|
|
|
|
-- Resetto l'UDC
|
|
UPDATE OPENQUERY( AS400XXXX, 'SELECT * FROM MAZZT_DTV3.XOGIX00F WHERE XRPQLN = 905793 AND XNRETI = ''U100548151'' ')
|
|
SET XDTPRO = 0 , XTRPRO = '', XDESMT = '', XMATSC = 'N', XCDTER = ''
|
|
|
|
-- Comando OK
|
|
-- UPDATE OPENQUERY( AS400XXXX, 'SELECT * FROM MAZZT_DTV3.XOGIX00F WHERE XRPQLN = 905793 AND XNRETI = ''U100548151'' ')
|
|
-- SET XDTPRO = 20100723 , XTRPRO = 'S', XDESMT = 'F01', XMATSC = 'N', XCDTER = ''
|
|
*/
|
|
|