Olha cara acho que falta um commit para criar a table.
E no insert eu colocaria o campo da table tambem, por exemplo, insert into temp_table(valores) values (blablabla)
Coloquei o commit, tanto na procedure (após a criação da tabela), quanto no comando execute immediate.
Também coloquei o nome do campo na linha do insert, como você sugeriu.
Consegui, coloquei todos os comandos que utilizam a tabela temporária dentro de execute immediate.
Ex:
o insert: execute immediate ' insert into TEMP_TABELA values (V_LINHA); ';
Como o Rafael falou, teu erro provavelmente está no ";" dentro da string de criação da tabela.
Uma dica: Você vai rodar esse script mais que uma vez? A criação da tabela na segunda execução causará erro.
Você não pode criar esta tabela no banco, definitivamente (como temp), uma única vez?
Caso não possa, faça uma verificação no teu script, no dicionário de dados, para ver se a tabela já existe e, somente criá-la, caso não exista.