EXECUTANDO PROCEDURE

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Mensagemem Seg, 22 Set 2008 6:50 pm

Pessoal, estou com problema na procedure a seguir. Essa procedure ira dar um loop de grants em todos os object_name do meu schema para um usuario qualquer e como resposta tras o seguinte erro abaixo, caso alguém possa orientar agradeço desde já.

Procedure:

CREATE OR REPLACE PROCEDURE permissao_usuario (IUSUARIO in VARCHAR)
is
BEGIN
FOR RM IN (SELECT OBJECT_NAME FROM USER_OBJECTS ORDER BY object_name) LOOP
EXECUTE IMMEDIATE ('GRANT SELECT ON '||RM.OBJECT_NAME||' TO :IUSUARIO');
END LOOP;
END;

Erro:

ORA-06550: line 2, column 29:
PLS-00201: identifier 'EDUARDOSANTANA' must be declared
ORA-06550: line 2, column 7:
PL/SQL: Statement ignored
israelbruno
Localização: Joao Pessoa - PB

Mensagemem Ter, 23 Set 2008 10:29 am

nunca vi fazer assim

sempre vi e uso é um cursor.
Tenta fazer um cursor e vê se dá o mesmo erro.
NaPraia
Localização: Floripa - SC

Mensagemem Ter, 23 Set 2008 10:44 am

Cara, estou achando que o problema está na chamada da procedure...

Provalmente você esqueceu de colocar aspas simples...

Outra coisa que me parece estar errado é na linha do EXECUTE_IMMEDIATE...
Acho q o certo é isso:
Código: Selecionar todos
EXECUTE IMMEDIATE ('GRANT SELECT ON '||RM.OBJECT_NAME||' TO '||IUSUARIO);


T+
joaogarcia
Localização: Campinas - SP

Cordialmente,
João C. Garcia


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


    Voltar para PL/SQL

    Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes