I'm wondering whether the problem is not with the execute immediate, but with the view definition itself.

Have you tried creating the view directly through SQL*Plus?