因为在不同的用户名有相同的表,所以希望能够有一个存储就可以处理所有的用户。所以将这个表明作为参数传递进来,如下所示
create or replace function fun_test(
table_name varchar2)
return number is 
   TYPE cur_typ IS REF CURSOR;
c cur_typ;
v_count number; 
v_user_no varchar2(20);
v_str varchar2(200);
begin
     v_str := 'SELECT user_no from ' ||table_name||' where rownum <= 10';
     OPEN c FOR v_str;
     loop
fetch c into v_user_no;
exit when c%NOTFOUND;
     dbms_output.put_line(v_user_no);
     end loop;
  close c;
  return 1;
end;执行时如果是本用户下的表来测试
 declare
  result number;
 begin
  result := fun_test('tb_callrecord');
 end;
执行没问题,一切正常。但是不是本用户下的表如declare
  result number;
 begin
  result := fun_test('dbaguangzhou.tb_callrecord');
 end;
就会报ORA-00942:table or view not exist.
而实际上将表是存在的,将SQL语句单独执行也是没问题的。求高手作答谢谢,