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
Responder
israelbruno
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Seg, 22 Set 2008 6:43 pm
Localização: Joao Pessoa - PB

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
NaPraia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 22 Fev 2008 8:24 am
Localização: Floripa - SC

nunca vi fazer assim

sempre vi e uso é um cursor.
Tenta fazer um cursor e vê se dá o mesmo erro.
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

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:

Selecionar tudo

EXECUTE IMMEDIATE ('GRANT SELECT ON '||RM.OBJECT_NAME||' TO '||IUSUARIO);
T+
Responder
  • Informação