SQL Error [900] [42000]: ORA-00900: invalid SQL statement
09:38 04 Jun 2024

I'm working on a Oracle stored procedure , my oracle database version is Oracle Database 11.2.0.1.0. I tried to write a stored procedure bit it's not working

CREATE OR REPLACE PROCEDURE update_ybm_for_exp_yb_ybjs IS

  CURSOR cur_exp_yb_ybjs IS
    SELECT setl_id, PHARMACY_ID, PATIENT_ID, prodno, batchno, created
    FROM exp_yb_ybjs_20240604_copy;

  v_setl_id      exp_yb_ybjs_20240604_copy.setl_id%TYPE;
  v_PHARMACY_ID   exp_yb_ybjs_20240604_copy.PHARMACY_ID%TYPE;
  v_PATIENT_ID   exp_yb_ybjs_20240604_copy.PATIENT_ID%TYPE;
  v_prodno       exp_yb_ybjs_20240604_copy.prodno%TYPE;
  v_batchno       exp_yb_ybjs_20240604_copy.batchno%TYPE;
  v_created    exp_yb_ybjs_20240604_copy.created%TYPE;

  myYBFL_ML yw_spxxhzb.YBFL_ML%TYPE;
BEGIN
  OPEN cur_exp_yb_ybjs;

  LOOP
    FETCH cur_exp_yb_ybjs INTO v_setl_id, v_PHARMACY_ID, v_PATIENT_ID, v_prodno, v_batchno, v_created;
    EXIT WHEN cur_exp_yb_ybjs%NOTFOUND;

    BEGIN
      -- Check if the record exists in yw_spxxhzb
      SELECT YBFL_ML
      INTO myYBFL_ML
      FROM (
       SELECT YBFL_ML, ROW_NUMBER() OVER (ORDER BY created DESC) AS rn
        FROM yw_spxxhzb
        WHERE created <= v_created AND prodno = v_prodno
      )
      WHERE rn = 1;

      -- Update the target table
      UPDATE exp_yb_ybjs_20240604_copy
      SET ITEM_ID= myYBFL_ML
      WHERE setl_id = v_setl_id
        AND PHARMACY_ID = v_PHARMACY_ID
        AND PATIENT_ID = v_PATIENT_ID
        AND prodno = v_prodno
        AND batchno = v_batchno
        AND created = v_created;

    EXCEPTION
      WHEN NO_DATA_FOUND THEN 
        
        -- Handle case where no matching record is found
        NULL; -- No action needed if no record is found
    END;
  END LOOP;

  CLOSE cur_exp_yb_ybjs;
END update_ybm_for_exp_yb_ybjs;
/

the problem I encountered was

SQL Error [900] [42000]: ORA-00900: invalid SQL statement
Error position: line: 8

the code of line was

   v_setl_id      exp_yb_ybjs_20240604_copy.setl_id%TYPE

Any idea what mistakes I made in this stored procedure?

stored-procedures plsql oracle11g