Tente perder o ";" de dentro da string que você executa imediatamente. EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ')';