Ошибка возникает из-за того, что число, которое вы представляете, на самом деле является символьной строкой, содержащей запятые и т. Д. Когда вы вводите to_number, Oracle не может заменить запятые.
Возможно, вы захотите использовать функцию replace для удаления запятых
Изменить
if l_tot = nvl(to_number(:P21_TOTAL_PRICE),0) then
до
if l_tot = nvl(to_number(replace(:P21_TOTAL_PRICE,',','')),0) then