create or replace function CreateSynonymForUser return integer is
  Result     integer;
  iCount     integer(8);
  sTableName varchar2(100);
  sSql       varchar2(300);
  cursor c1(p1 varchar2) is  SELECT TABLE_NAME FROM Tab_tmp where OWNER = p1 and TABLESPACE_NAME = 'GSGIS';
begin
  open c1('GSGIS');
  loop
    --sSql := 'create or replace synonym zyqr.';
    fetch c1
      into sTableName;
    exit when c1%notfound;
    sSql := 'create or replace  synonym ZYQR.' || sTableName || ' for GSGIS.' || sTableName;
    EXECUTE IMMEDIATE sSql;
    iCount := iCount + 1;
    Result := iCount;
  end loop;
  return(Result);
end CreateSynonymForUser;使用“GSGIS”用户执行。错误语句:    EXECUTE IMMEDIATE sSql;
提示权限不足。