To get the error try in SQL*Plus after running your script:
SHOW ERRORS
or
SELECT * FROM user_errors
WHERE name = ' EXECUTEDDL' ;

Probably a / after the procedure will help:
and remove exec before executeddl in your PL/SQL block.

...
CREATE OR REPLACE PROCEDURE executeDDL(STRING IN varchar2) AS
...
END;
/
DECLARE
...

If you use Oracle 8, you can use the procedure DBMS_UTILITY.EXEC_DDL_STATEMENT
...
:cur_version := :target_version;
DBMS_UTILITY.EXEC_DDL_STATEMENT('ALTER TABLE TEST ADD (FFF VARCHAR2 (50))');
INSERT INTO TEST (AAA,BBB,CCC,DDD) VALUES('UPDATED', '','','','');
...

In 8i you can use EXECUTE IMMEDIATE:
...
:cur_version := :target_version;
EXECUET IMMEDIATE 'ALTER TABLE TEST ADD (FFF VARCHAR2 (50))';
INSERT INTO TEST (AAA,BBB,CCC,DDD) VALUES('UPDATED', '','','','');
...


...