Вы можете создать перегруженную функцию пакета следующим образом:
package p is
function changed (p_old varchar2, p_new varchar2) return voolean;
function changed (p_old number, p_new number) return voolean;
function changed (p_old date, p_new date) return voolean;
end;
Тогда просто позвоните в триггеры:
if p.changed(:old.location,:new.location) then ...
В качестве альтернативы вы можете просто сделать это:
if nvl(:old.location,'£$%') != nvl(:new.location,'£$%') then ...
Конечно, вы должны выбрать значение, которое никогда не может быть реальным местоположением, что может быть сложно в некоторых случаях. Для VARCHAR2 вы можете выбрать значение, которое слишком велико для размера столбца (если это не 4000).