You could always *try* it :-)
SQL> CREATE OR REPLACE PACKAGE MyPackage AS
2
3 TYPE myType is record(
4 NAME VARCHAR(30),
5 SURNAME VARCHAR(30)
6 );
7
8 type vs is varray(10) of number;
9 type nt is table of date;
10 type blah is table of mytype;
11
12 FUNCTION printData(NAMEP VARCHAR) RETURN VARCHAR;
13
14 END MyPackage;
15 /
Package created.
If you want to run DDL in a proc (normally a bad idea), you can use 'execute immediate' to run any sql statement, eg
SQL> begin
2 execute immediate 'drop table t';
3 end;
4 /
PL/SQL procedure successfully completed.