Delimiter //
/**
	procédure stoké qui lance la procédure de normalistion.
	permet une gestion global des erreurs
*/
/**	
	In batchnum Int : num du lot, si 0 ou null traitement de l'ensembles des lignes
	In batchsize int :  nombre de lots restant à traiter
	out status int : staus de sortie
        - 0 : traitement du lot réussi
        - >0 : traitement du lot terminé mais alertes (annomalies) présent
                => identifiant du message d'alerte
        - < 0 : traitement du lot échoué
                => identifiant du code d'erreur
    out lasterrmsg varchar(255)  : message complémentaire de l'erreur ayant entrainé
                                    l'echec du traitement

*/


Drop Procedure if exists LOADER_LAUNCH_NORMALIZER//

Create Procedure LOADER_LAUNCH_NORMALIZER (
	In targetName varchar(70)
	, In batchnum int
	, In useTransaction int
	, out returnStatus int
	, out lasterrmsg varchar(255)
)
Begin
	main: begin
		Declare errCount int default 0;
		Declare transactionStarted int default 0 ;
		DECLARE continue HANDLER FOR SQLWARNING
		Begin
			resignal;
		end ;

		-- DECLARE Exit HANDLER FOR SQLSTATE '20002'
		DECLARE Exit HANDLER FOR SQLEXCEPTION
		Begin
			-- set errcount = errcount + 1000;
			if transactionStarted  <> 0 then
				rollback;
				set transactionStarted  = 0;
			End if;
			resignal;
		end ;

		if Not targetName Regexp '^LOADER_[a-zA-Z]+_NORM' Then
			Set targetName = concat('LOADER_', targetName, '_NORMALIZE');
		End If;
-- 
		Set @ldnclnrm_batchnum = batchnum;
		Set @useTransaction = useTransaction;

		Set @query = Concat('call ', targetName, '(?)');

--         call cash_print(@query, null);

		PREPARE ldnclnrm_targetstmt FROM @query; 
		execute ldnclnrm_targetstmt 
			using @ldnclnrm_batchnum 
			;
		Deallocate prepare ldnclnrm_targetstmt; 

		Set returnStatus = @status;

		Set lasterrmsg = @lasterrmsg;
	end ;
End //
Delimiter ;