Не могли бы вы просто посчитать количество совпадений в ваших таблицах?
(Кроме того, вам действительно следует начать использовать синтаксис ANSI SQL, а не старый SQL-86)
SELECT count(1)
INTO l_test
FROM table t1
INNER JOIN table t2 USING (code)
WHERE t1.id = l_id
AND t1.status = 'D';
Если счетчик равен нулю, соответствующих идентификаторов не было, а если он больше нуля, совпадения присутствуют.
Это также упрощает ваш код, так как вам не нужно проверять NO_DATA_FOUND, поскольку счетчик всегда будет возвращатьзначение (ноль или более).
Надеюсь, это поможет ...