Delimiter //
/**
    In batchnum Int : num du lot
*/

Drop Procedure if exists LOADER_REFDATA_REF_DATA_INSERT//

Create Procedure LOADER_REFDATA_REF_DATA_INSERT (
    In batchnum int
    , In lastid int
)
Begin
	-- insertion
    -- => optimisation possible si besoin en crent une table avec les nouveaux éléments
    -- => volontairement noncrée dans une 1er version
    -- => pour aller plus et dans la mesure les référence sont en quantité limité
    -- => on utilise un distinc dans le lot
    Insert Into ENTITIES_REF_DATAS (
        ID_ENTITIES_REF_DATAS
        , ENTITIES_REF_ID_ENTITIES_REF
        , ENTITIES_REF_DATAS_CODE
    )
    Select Distinct
            ARD.NEW_ID_ENTITIES_REF_DATAS + lastid
            , ARD.ENTITIES_REF_ID_ENTITIES_REF
            , ARD.ENTITIES_REF_DATA_CODE
    From LOADER_STATUS S
        Inner Join
            LOADER_REFDATA ARD
            On ARD.LOADER_STATUS_ID_LOADER_STATUS = S.ID_LOADER_STATUS
    Where 
        S.LOADER_STATUS_BATCH_NUM = batchnum
        And ARD.ID_ENTITIES_REF_DATAS Is Null
        And ARD.NEW_ID_ENTITIES_REF_DATAS Is Not Null
        AND S.LOADER_STATUS_ERRCOUNT = 0

    ;
End //

Delimiter ;
