Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aluisiopfilho

executar procedure

Recommended Posts

Estou precisando estudar banco de dados. Baixei e instalei o Oracle 10g e começei a ler materiais retirados da internet. Só que no primeiro exemplo "travou", pois não estou conseguindo rodar a procedure abaixo. Esta dando o erro "ORA-00900 Instrução SQL Inválida".create or replace procedure AUMENTA_SALARIO(sp_empno IN emp.empno%TYPE)isbeginUPDATE empset sal = sal * 1.10where empno = sp_empno;end aumenta_salario;Configurei os privilegios do usuario (hr/hr) para "CREATE PROCEDURE" existe alguma outra configuração que devo fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aluiso,

 

Primeiramente, se estiver conectado com o usuário HR precisa de GRANT SELECT, UPDATE, INSERT, DELETE TO SCOTT. Pois a tabela EMP está no usuário SCOTT do banco de dados.

 

Depois irá conseguir executar a procedure sem problemas.

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, alphamek mas nao entendi direito sua explicação.Fiz login como administrador e não vizualizei nenhum usuario "SCOTT" apenas "HR".Quanto os privilegios só existe "create table" "create procedure" "create tigger" ect... os quais estão selecionados. Outra coisa que esqueci de passar é que a conexão é local.Mesmo assim muito obrigado pela atençao

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aluiso,

 

Vou tentar me expressar melhor, seguinte:

 

Na instalação padrão do Oracle, ele instala alguns usuários de testes, como SCOTT, HR, OE etc, para fins de estudo. Porém, na versão XE só consta o usuário HR, então tu não iria achar mesmo o usuário SCOTT, terá que executar um script para criar esse usuário.

 

O exemplo que você passo, está realizando um UPDATE na tabela EMP (Que sei que é do usuário SCOTT, nas outras versões do Oracle), e no usuário HR não terá essa tabela, as tabelas que existe são apenas essas:

 


OWNER TABLE
HR REGIONS
HR LOCATIONS
HR DEPARTMENTS
HR JOBS
HR EMPLOYEES
HR JOB_HISTORY
HR COUNTRIES
[code=auto:0]

Então, para tu conseguir utilizar a procedure que está fazendo, existe duas opções:

1 - Criar o usuário SCOTT, passar os GRANTS de permissão e executar sua procedure.

ou

2 - Simplesmente alterar a tabela do seu UPDATE para seu estudo, exemplo:

[sql]create or replace procedure AUMENTA_SALARIO
(sp_jobid IN jobs.job_id%TYPE)

is
begin UPDATE jobs
set min_salary = min_salary * 1.10
where job_id = sp_jobid;
end aumenta_salario;[/sql]

 

Abraços, http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.