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.
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.
Roa
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)