Can we declare a variable after creating table

I'm creating a new stored procedure that can auto generate table and it will check the other table and insert the data to the new table. The problem is I get an error .

I already try to add semicolon after creating table and try also remove it, it not working:

BEGIN 

CREATE TABLE TEST
      (
      ID INT AUTO_INCREMENT NOT NULL,
      TEST NAME VARCHAR(255) DEFAULT NULL, 

      UNIQUE(ID),
      PRIMARY KEY (ID)

      );

       <I HAVE ERROR HERE>

        DECLARE vID,vNAME,vADD VARCHAR(255);
        DECLARE no_more_rows BOOLEAN DEFAULT FALSE;

        DECLARE cur1 CURSOR FOR 
    SELECT NAME,ADD FROM OLD_TABLE  

   .......

END$$

I expect that the run will compile successfully but it tell me have 1 error