You don't need a semi-colon to run the DDL in a procedure.
In SQL Plus, when we do this:
SQL> alter database move datafile 'X:\ORADATA\DB18\PDB1\DEMO.DBF' to 'C:\TEMP\DEMO.DBF';
the same in a procedure would be:
execute immediate q'{alter database move datafile 'X:\ORADATA\DB18\PDB1\DEMO.DBF' to 'C:\TEMP\DEMO.DBF'}';
The 'q' notation makes handling quotes easier