oracle sql/plus 语句中给变量赋值

declare
aa user_tables%rowtype;
begin
aa.table_name :='person';
--dbms_output.put_line(aa);
update aa.table_name set personid='cc' where personid='aa';
end;
提示错误:“表或试图不存在”;
怎么样的赋值才可以使update识别aa.table_name 这个变量?

直接给个示例:
[code="sql"]CREATE OR REPLACE PACKAGE BODY czmg
AS
PROCEDURE showtb
AS
BEGIN
tablea := 'ajlx';
str := 'SELECT COUNT (*) FROM ' || tablea;

  EXECUTE IMMEDIATE str
               INTO item;

  DBMS_OUTPUT.put_line (item);

END showtb;
END czmg;[/code]

EXECUTE IMMEDIATE用法:
http://huajiang.iteye.com/blog/484941

http://www.wangchao.net.cn/bbsdetail_543363.html
http://www.abcdown.net/InfoView/Article_273063_9.html