Sam,

To drop the temporary table you need first to truncate the table sam and after to drop it.

Ex:
SQLWKS> declare
2> a varchar2(200);
3> begin
4> a := 'create global temporary table sam on commit preserve rows as select * from toto';
5> execute immediate a;
6> end;
7>
8>
9>
Statement processed.
SQLWKS> truncate table sam
2>
Statement processed.
SQLWKS> drop table sam
2>
Statement processed.

Hope this help,
Steph.