I think you are missing part of the where clause.

Code:
SELECT "AmountDue" 
  into v_bal 
  FROM PTBAL 
 where "Patient"=:new."Patient" 
   and "Batch"=( SELECT MAX("Batch") 
                   FROM ptbalbat 
                  where "Patient"=:new."Patient");