in order to write ddl statements in a pl/sql block we make use of dbms_sql package , the example is given below, hope this solves ur problem.

here in the example below i have taken a parameter string where in u can pass the ddl statement upon the execution of the pl/ sql block.

like, exec proc_name('alter table tab_name add col1 datatype');

CREATE OR REPLACE PROCEDURE proc_name(STRING IN varchar2) AS
cursor_name INTEGER;
ret INTEGER;
BEGIN
cursor_name := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cursor_name, string, DBMS_SQL.native);
ret := DBMS_SQL.EXECUTE(cursor_name);
DBMS_SQL.CLOSE_CURSOR(cursor_name);
END;