在需要下列之一时的异常,请问哪里写错了

在需要下列之一时的错误,请教哪里写错了
create or replace procedure AA_mytest(P1 in varchar2, P2 out varchar2) is
cellcode varchar2(30);
taskno      varchar2(4);

begin
     CURSOR CURSOR_TEMP(cp1 VARCHAR2) IS

     select cell_code from cmd_cell t where t.product_code=cp1;
     open CURSOR_TEMP(P1);
     loop
       FETCH CURSOR_TEMP INTO cellcode;
       
       dbms_output.put_line(cellcode);
       select task_no into taskno from wcs_task t where t.cell_code=cellcode;
        IF CURSOR_TEMP%NOTFOUND THEN
          EXIT;
        END IF;
     end loop;
end AA_mytest;
在需要下列之一时的异常,请问哪里写错了

请教下我哪里写错了
------解决思路----------------------
cursor的定义应该在begin之前
------解决思路----------------------
上边先定义,下边再直接用