Pular para o conteúdo
Visualizando 1 post (de 1 do total)
  • Autor
    Posts
  • #83349
    airoosp
    Participante

      Boa tarde,

      Estou utilizando a estrutura abaixo composta por uma procedure e função e ao chamar a função pela procedure é exibida a mensagem abaixo:

      FUNÇÃO:

      create or replace function carga_1
      (
      vnome in varchar2
      )
      return varchar2
      is

      linha_comando varchar2(600);

      begin

      –LINESIZE 132 PAGESIZE 0 FEEDBACK off VERIFY off TRIMSPOOL on LONG 1000000 COLUMN ddl_string FORMAT A100 WORD_WRAP;
      DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,’STORAGE’,false);
      DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,’PRETTY’,true);
      DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,’SQLTERMINATOR’,true);
      DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,’REF_CONSTRAINTS’,false);

      select DBMS_METADATA.GET_GRANTED_DDL(‘SYSTEM_GRANT’,vnome) into linha_comando
      from dual;

      return(linha_comando);

      end;

      PROCEDURE:

      create or replace procedure permissoes_usuarios
      is

      lnX integer :=0;
      lcNome varchar2(50) :=null;

      Cursor usuarios is
      select s.username
      from dba_users s
      where s.username not in (select r.username
      from nao_importar_usuarios2 r)
      order by s.username;

      begin

      for lnX in usuarios loop
      begin
      lcNome := lnX.username;

      insert into permissoes_por_usuarios(linha)
      values(CARGA_1(lcNome));

      commit;

      end;
      end loop;

      end permissoes_usuarios;

      Mensagem de erro:

      ORA-31608: specified object of type SYSTEM_GRANT not found
      ORA-06512: at “SYS.DBMS_SYS_ERROR”, line 86
      ORA-06512: at “SYS.DBMS_METADATA”, line 645
      ORA-06512: at “SYS.DBMS_METADATA”, line 1364
      ORA-06512: at line 1

      Alguém tem alguma idéia pois parece que o SYSTEM_GRANT não aceita variável como parâmetro e o mais interessante é que se executar a função passando o parâmetro funciona, chamando pela procedure não.

      Obrigado.

      Airton

    Visualizando 1 post (de 1 do total)
    • Você deve fazer login para responder a este tópico.