What am I doing wrong

When I execute following shell script I am getting the following error

syntax error at line 50 : `<<' unmatched

What am I doing wrong :confused:

Script begins here
----------------

MPAN_FILE=$1

exec 3<$MPAN_FILE

while read -u3 -r Outcode Incode Depot
do
echo $Outcode
echo $Incode
echo $Depo

{
sqlplus -S abc/xyz <<EOF
set heading off feedback off serveroutput on

DECLARE
 DEPO number;
BEGIN
-- Attempt to find the depo
SELECT DEPOT_CODE
INTO   DEPO
FROM   DEPOT
WHERE  UPPER\(DEPOT_LKVAL\) = UPPER\('$\{Depot\}'\);

-- Found it, print the depo
DBMS\_OUTPUT.PUT_LINE \(Depo\);

EXCEPTION
  -- No depo
  WHEN NO\_DATA_FOUND THEN
     SELECT -1
     INTO   Depo
     FROM   dual;
     DBMS\_OUTPUT.PUT_LINE \(Depo\);
  WHEN OTHERS THEN
     SELECT -2
     INTO   Depo
     FROM   dual;
     DBMS\_OUTPUT.PUT_LINE \(Depo\);
END;
/
EOF

} | read Depo

echo $Depo
if [ ${Depo} -ge 0 ]
then
echo 'Success'

  \{
   sqlplus -S abc/xyz &lt;&lt;EOF
   set heading off feedback off serveroutput on
   
   DECLARE
     Err number;        
   BEGIN
     -- Attempt to Insert the data into depot\_postal_area
     INSERT INTO DEPOT\_POSTAL_AREA
     \(SUPPLIER\_CODE,DEPOT\_CODE,POST\_OUTCODE,POST_INCODE\)
     VALUES
     \(12,$\{Depo\},'$\{Outcode\}','$\{Incode\}'\);

     INSERT INTO DEPOT\_POSTAL_AREA
     \(SUPPLIER\_CODE,DEPOT\_CODE,POST\_OUTCODE,POST_INCODE\)
     VALUES
     \(13,$\{Depo\},'$\{Outcode\}','$\{Incode\}'\);

     Err := 0;
     DBMS\_OUTPUT.PUT_LINE \(Err\);
   EXCEPTION
      -- No depo
     WHEN OTHERS THEN
       SELECT -1
       INTO   Err
       FROM   dual;
       DBMS\_OUTPUT.PUT_LINE \(Err\);
   END;
   /
   EOF
  \} | read Error

  echo $Error

else
echo 'Failed'
fi
done

run the script with the 'set -x' set and debug the output.

I am getting the syntax error not the execution error.