Não, você não pode.
:new
e :old
são pseudo-registros, não registros reais que você pode atribuir a uma variável local. Se suas tabelas foram baseadas em tipos de objetos, :new
e :old
seriam então instâncias reais do tipo de objeto específico que pode ser passado como qualquer outro objeto. Mas é bem improvável que valha a pena definir suas tabelas em termos de objetos apenas para tornar seus gatilhos mais fáceis de escrever. Você pode, é claro, escrever um pacote PL/SQL que gere automaticamente o código de gatilho que você deseja fazendo coisas como consultar o dicionário de dados (ou seja,
all_tab_columns
para obter a lista de colunas em uma tabela) e usando SQL dinâmico. Dependendo do número de gatilhos que você espera escrever, isso pode ser mais fácil do que escrever e manter uma tonelada de código semelhante.