We have MERGE statement in a trigger on a table to populate another table.
The data we are trying to load does not exist in the table yet. But it tries to update the table and errors out (12:24:39 ORA-06502: PL/SQL: numeric or value error: NULL index table key value).

Here is the Code:

DECLARE
L_GIR_SYSTEM_ID NUMBER(5);
BEGIN
IF :new.DESCRIPTION != ld.DESCRIPTION then

SELECT b.gir_system_id
INTO L_GIR_SYSTEM_ID
FROM gir_system b
WHERE b.gir_system_cd = 'IVH';

MERGE
INTO GIR_DATA i
USING (SELECT NULL GIR_DATA_ID,
:new.DESCRIPTION ||
' - ' ||
to_char(:new.ivh_product_id, 'FM99999') DESCRIPTION,
L_GIR_SYSTEM_ID GIR_SYSTEM_ID,
:new.ivh_product_id EXT_SRC_PK_ID
FROM DUAL) t
ON ( i.EXT_SRC_PK_ID = t.EXT_SRC_PK_ID
AND i.GIR_SYSTEM_ID = t.GIR_SYSTEM_ID)
WHEN MATCHED THEN
UPDATE
SET i.DESCRIPTION = t.DESCRIPTION
WHEN NOT MATCHED THEN
INSERT
( GIR_DATA_ID,
DESCRIPTION,
GIR_SYSTEM_ID,
EXT_SRC_PK_ID)
VALUES
( NULL,
:new.DESCRIPTION ||
' - ' ||
to_char(:new.ivh_product_id, 'FM99999'),
L_GIR_SYSTEM_ID,
:new.IVH_PRODUCT_ID);
END IF;
END;

Thank you.

Hema