Problema com stored procedure

18/02/2004

0

Criei a seguinte procedure no oracle 9i - usando PLSQL

CREATE OR REPLACE PROCEDURE inc_competencia
(p_comp_descr IN competencia.comp_descr¬TYPE,
p_comp_codigo OUT competencia.comp_codigo¬TYPE)
IS
BEGIN
INSERT INTO competencia (comp_codigo,comp_descr)
VALUES (comp_codigo_seq.NEXTVAL, p_comp_descr);
SELECT comp_codigo_seq.CURRVAL INTO p_comp_codigo FROM DUAL ;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
p_comp_codigo := 100; --somente um teste
ROLLBACK;
END inc_competencia;

----------------------

Quando executo a procedure no Sql*Plus funciona normalmente

----------------------

Quando vou executar no Delphi 7 - Usando DBExpress
(Não consigo gravar no banco. E o parametro de retorno no delphi
retorna 0.)
---------------------

Como esta no delphi 7

Coloquei um comoponente TSQLStoredProc

Alterei as propriedades StoredProcName para INC_COMPETENCIA
Params:
P_comp_codigo DataType ftInteger (Saida)
P_comp_descr DataType ftString (Entrada)

No Evento ONclick do Botao Gravar

SqlInc_Compet.Close;
SqlInc_Compet.ParamByName(´p_comp_descr´).Text := edit2.text (Qualquer valor string);
SqlInc_Compet.ExecProc;
Edit1.Text := SqlInc_Compet.ParamByName(´p_comp_codigo´).Text;
--------------------

Não retorna erro algum nem grava nada no banco oracle e
SqlInc_Compet.ParamByName(´p_comp_codigo´).Text retorna 0 (Zero).

Quando não coloco parâmetro de saída na stored procedure não dá erro e grava normalmente, porém eu preciso do tal parâmetro de saída.

Alguém já passou por uma situação como essa?

Desde já agradeço a colaboração.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar