how to pass a variable to an update sql statement inside a loop

hi all,

i am experiencing an error which i think an incorrect syntax for the where clause passing a variable was given. under is my code.

sqlplus -s ${USERNAME}/${PASSWORD}@${SID} << END1 >> $LOGFILE
whenever sqlerror exit
set serveroutput on size 1000000
declare
  l_rc                  varchar2(1)   := null;
  cursor c1 is
    select first_name as acct_id,
      from srtable;
begin
  dbms_output.enable(1000000);
  for i in c1 loop
         update srtable
         set appt_notes = 'N'
         where first_name = i.acct_id;
         commit;
  end loop;
END1

this is the error:
-6502 ORA-06502: PL/SQL: numeric or value error: character to number conversion

does anyone know the correct syntax for my where clause? Need help.