Чистое решение SQL - MERGE.
merge into zz_test_result ztr
using (select id, name, descr
from zz_test) zt
on (zt.id = ztr.id)
when not matched then
insert (ztr.id, ztr.name)
values (zt.id, zt.name)
/
Предложение USING - это запрос от вашего курсора. Предложение ON - это условие, которое вы хотите проверить. Ветвь WHEN NOT MATCHED означает, что строки вставляются только тогда, когда это условие ложно.
Очевидно, что если это домашняя работа и PL / SQL обязателен, то это то, что вам нужно сдать. Но в реальной жизни, в профессиональном корпоративном программном обеспечении, всегда лучше написать наименьшее количествокод, необходимый для обеспечения эффективного решения, и это почти всегда означает операции набора SQL, а не построчные процедурные операции.