como usar uma variável no script oracle para o nome da tabela

Eu tenho um script pl \ sql onde eu quero definir o nome da tabela usada no script para uma variável. Então, a partir de alguns exemplos que encontrei na web, escrevi o código abaixo. A primeira seção funciona, então eu acho que minha sintaxe geral está correta, mas a segunda seção, onde eu tento usar uma variável para um nome de tabela, erros ("Erro SQL: ORA-00903: nome da tabela inválido").

Qualquer um sabe o que estou fazendo errado ... Eu não faço muito PL \ SQL então talvez eu esteja perdendo algo óbvio.

--works
variable numOfrecords number;
exec :numOfrecords := 10;
select * from customers2008 where rownum < :numOfrecords;

--does not work
 variable tableNm CHAR;
 exec :tableNm := 'customers2008';
 print tableNm;
 select * from :tableNm;

questionAnswers(4)

yourAnswerToTheQuestion