DUPLICATE_RECORD
é um procedimento restrito e você não pode usá-lo em WHEN-VALIDATE-RECORD
gatilho (ou qualquer outro do mesmo tipo). Como você tem que navegar para o próximo registro (se quiser copiá-lo), mesmo que você coloque esse procedimento restrito em outra unidade de programa PL/SQL, tudo será apenas propagação e - em última análise - levantam o mesmo erro. Então... você está sem sorte.
Mesmo se você escrevesse um procedimento (armazenado) que inseriria essa linha "Jr" no banco de dados em algum lugar por trás da cena, você teria que buscar esses valores na tela. Como
EXECUTE_QUERY
é a maneira de fazê-lo, e como é (ainda outro) procedimento restrito, isso também não funcionará. Se você planejava limpar o bloco de dados e preenchê-lo manualmente (usando um loop), teria que navegar para o próximo (e próximo e próximo) registro com
NEXT_RECORD
, e isso é novamente um procedimento restrito. Além disso, se fosse um bloco de dados (e sim, é), você realmente criaria duplicatas para todos os registros, uma vez que você salvasse as alterações - ou falharia com violação de restrição exclusiva (o que é bom) ou você criaria duplicatas (o que é pior). BTW o que há de errado com
WHEN-NEW-RECORD-INSTANCE
? Quais são os problemas que você tem ao usá-lo?