Criação de 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
juniorboll
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Sex, 04 Nov 2011 10:12 am

Tentei criar uma procedure, mas não cosegui fazer com que ela funcione, sempre fala que ela foi criada com um erro, ela aparece no banco como criada mas inativa, se alguém puder ajudar a cria-la.

Selecionar tudo

Create or replace procedure SP_RELPRED
begin
delete relprod
end
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Juniorboll,

Bem vindo ao fórun GLUFKE !

Por favor, faça este procedimento em seu banco de dados:

- Conecte-se no SQL*Plus com o usuário dono da procedure;
- Execute no SQL*Plus o script a seguir:

Selecionar tudo

    Create or replace procedure SP_RELPRED
    begin
    delete relprod
    end  SP_RELPRED;
    /
- Log em seguida a compilação (com sucesso ou não), execute este comando:

Selecionar tudo

   SHOW ERRORS;
Se a sua procedure foi compilada com erros, o comando SHOW ERRORS vai mostrar para você a mensagem de erro detectada durante a compilação. Poste a mensagem retornada por SHOW ERRORS se não souber como solucionar o erro detectado.

Você pode também pode consultar a situação de sua procedure fazendo um SELECT no dicionário de dados:

Selecionar tudo

SELECT NAME,OBJECT_TYPE,STATUS FROM DBA_OBJECTS WHERE OBJECT_NAME = 'SP_RELPRED''
Abraços,

Sergio Coutinho
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Selecionar tudo

Create or replace procedure SP_RELPRED
begin
delete from relprod;
end SP_RELPRED;
acho que faltou um ponto e virgula no delete.
juniorboll
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Sex, 04 Nov 2011 10:12 am

PESSOAL DEU ESSE SEGUINTE ERRO

Selecionar tudo

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/1      PLS-00103: Encontrado o símbolo "BEGIN" quando um dos seguintes
         símbolos era esperado:
         ( ; is with authid as cluster compress order using compiled
         wrapped external deterministic parallel_enable pipelined
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Faltou o IS na declaração da procedure

Selecionar tudo

Create or replace procedure SP_RELPRED is
begin
delete from relprod;
end SP_RELPRED;
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Juniorboll,

Seria legal se você usasse para o desenvolvimento PL/SQL de suas procedures alguma ferramenta freeware.

Isso lhe ajudaria em muito na compilação e debug de seu código PL/SQL.

Um destes produtos seria o ORACLE SQL DEVELOPER. Você pode baixar ele gratuitamente no link abaixo:

http://www.oracle.com/technetwork/devel ... index.html

Abraços,

Sergio Coutinho
juniorboll
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Sex, 04 Nov 2011 10:12 am

Deu certo, muito obrigado

To começando agora com procedures e to apanhando mais que tudo.
so um pergunta eu posso colocar para a procedure fazer duas coisas tipo fazer esse delete e depois fazer um insert?

Selecionar tudo

CREATE OR REPLACE PROCEDURE Sp_Relprod IS
BEGIN
DELETE RELPROD;
INSERT INTO RELPROD (CODPROD, NOME, preço) VALUES (1,SANGUE, 15),
END Sp_Relprod;
/
Acima so um exemplo, é para saber se da para fazer a creação da procedure de delete com um insert apos, mas não é essa expressão q eu usaria e sim uma mais complexa com select.
juniorboll
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Sex, 04 Nov 2011 10:12 am

Ai pessoal, deu tudo certo aqui, graças a vocês consegui aprender mais um pouco do oracle.

Agradeço a todos voês e ao forum, Obrigado
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Juniorboll,

Sim, você pode combinar comandos de DELETE, INSERT, UPDATE e SELECT...INTO dentro de uma procedure.

A linguagem PL/SQL do Oracle é bem poderosa.

Se você realmente deseja aprender a fundo PL/SQL, eu poderia recomendar para você este excelente livro em português: ORACLE 9I - PROGRAMACAO PL/SQL (ISBN: 8535209476) .

Existem outros livros desta mesma série para a versão 10g e 11g, mas mesmo este livro da versão 9i vai te ensinar as ´técnicas de programação, algumas delas bem complexas.

Abraços e bons estudos,

Sergio Coutinho
juniorboll
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Sex, 04 Nov 2011 10:12 am

Obrigado pela indicação com certeza vou ler...

Att,
Romulo Junior
Responder
  • Informação
  • Quem está online

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