需要用到动态sql,因为你传进来当作表名的参数oracle在静态编译时是把它当作一个表名的,当然不存在了啊。 execute immediate 'select * from '||table_name
create procedure name_pro(p_table in varchar2,p_rc out pkg_test.myrctype) as str varchar2(50); begin str:='select * from '||p_table; open p_rc for str; end; /
execute immediate 'select * from '||table_name
as
str varchar2(50);
begin
str:='select * from '||p_table;
open p_rc for str;
end;
/