[firebase-br] Par?metros em Stored Procedures

hugo.osawa em gmail.com hugo.osawa em gmail.com
Ter Jun 20 22:49:28 -03 2006


Obrigado, isso estava errado mesmo

O q foi estranho é que em seguida, mesmo parecendo q o SQLStoredProcedure 
estava configurado corretamente, o formato dos parametros iam errado. 
Deletei e pus outro no lugar, da mesma forma e agora funciona direito!
Deixa eu aproveitar e perguntar: vc acha ruim retornar o generator pegando 
nessa mesma procedure com 'gen_id(gen_processo, 0);' ?
Mais uma vez agradeço.

Hugo

"Washington Tavares" 
<washingtontavares em gmail.com> escreveu na 
mensagem news:e16594290606161633j6cde899av252237e8e00d3da8 em mail.gmail.com...
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
______________________________________________
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







Mais detalhes sobre a lista de discussão lista