[firebase-br] Par?metros em Stored Procedures
Washington Tavares
washingtontavares em gmail.com
Sex Jun 16 20:33:18 -03 2006
hugo,
voce não está conseguindo via objeto SQLStoredProcedure por causa da
clausula "suspend".
Quando voce estiver utilizando essa clausula voce deve executar a procedure
via SELECT.
Washington Tavares
2006/6/15, hugo.osawa em gmail.com <hugo.osawa em gmail.com>:
>
> Gente, perdi muito tempo tentando descobrir, mas não consigo fazer esta
> procedure funcionar pelo SQLStoredProcedure.
>
> Pelo IBExpress funciona sossegado.. já pelo Delphi, nao..
> Procedure:
>
>
> <? SET TERM ^ ;
>
>
>
> CREATE PROCEDURE PROCEDURE2 (
>
> i_u varchar(1),
>
> id_lote varchar(10),
>
> id_funcionario varchar(10),
>
> status varchar(1),
>
> id_processo integer)
>
> returns (
>
> id_proc integer)
>
> as
>
> begin
>
> /* Procedure Text */
>
> IF (I_U = 'I') THEN /*Inclusão*/
>
> BEGIN
>
> INSERT INTO PROCESSO (ID_LOTE,ID_FUNCIONARIO,STATUS) VALUES
> (:ID_LOTE,:ID_FUNCIONARIO,:STATUS);
>
> id_proc = gen_id(gen_processo, 0);
>
> END
>
> ELSE
>
> IF (I_U = 'U') THEN /*Alteração*/
>
> UPDATE PROCESSO SET DATA_FIM = current_date, HORA_FIM = current_time,
> STATUS = :status WHERE ID_PROCESSO = :id_processo;
>
> suspend;
>
> end^
>
>
>
> SET TERM ; ^
>
>
>
> GRANT SELECT,INSERT,UPDATE ON PROCESSO TO PROCEDURE PROCEDURE2;
>
>
>
> GRANT EXECUTE ON PROCEDURE PROCEDURE2 TO SYSDBA;?>
>
>
>
> Obs: comentei as condicionais que testam o parametro que define se é
> Update
> ou Insert (I_U) e tive a impressão que a procedure não está reconhecendo o
> caractere (não entra em nenhum if).
>
> Delphi (tirei a parte do SQLConnection p/ ficar mais claro de ler):
>
>
>
> <? with DBForm.SQLSPProcesso do
>
> begin
>
> ParamByName('I_U').AsString:='I';
>
> ParamByName('ID_LOTE').AsString:=ST.ID_Lote; dos campos
>
> ParamByName('ID_FUNCIONARIO').AsString:=ST.ID_Funcionario;//
>
> Params.ParamByName('ID_PROCESSO').Asinteger:=0;
>
> try
>
> ExecProc;
>
> ST.ID_PROCESSO:=ParamByName('ID_PROC').AsInteger;
>
> except
>
> on Exc:Exception do
>
> begin
>
> ShowMessage('Erro na insercao: ' + Exc.Message);
>
> end;
>
> end;
>
> end;?>
>
>
>
> No SQLStoreProcedure estão configurados todos os parametros com seus
> tipos,
> sendo todos de entrada com exceção do ID_PROC, que recupero quando INSERT.
>
> Quem puder ajudar, agradeço muito!
>
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
--
Washington Tavares
Mais detalhes sobre a lista de discussão lista