Personally, I'd use a MINUS
SELECT *
FROM code_mapping
WHERE soure_system_id = '&LHDNUMBER'
MINUS
SELECT *
FROM dm.code_mapping@prod_check
MINUS
handles NULL
comparisons automatically (a NULL
on the source automatically matches a NULL
on the target).
If you want to list all differences between the two tables (i.e. list all rows that exist in dev but not prod and prod but not dev), you can add a UNION ALL
(SELECT a.*, 'In dev but not prod' descriptio
FROM dev_table a
MINUS
SELECT a.*, 'In dev but not prod' description
FROM prod_table a)
UNION ALL
(SELECT a.*, 'In prod but not dev' descriptio
FROM prod_table a
MINUS
SELECT a.*, 'In prod but not dev' description
FROM dev_table a)