[firebase-br] Stored procedures

Edson Marco Ferrari Junior edmafer em gmail.com
Sex Abr 7 12:48:54 -03 2006


valeu!

Realmente estava faltando o suspend. Colocando ele no final da
procedure resolveu o meu problema!

On 4/7/06, RedDevil <reddevil.fdb em gmail.com> wrote:
> create procedure sp_save_cliente(va_cli_nome varchar(25))
> returns(
>    vcli_id integer
> )
> as
> begin
>    /*
>     * Preciso do id do cliente, caso ele não
>     * esteja cadastrado, vou cadastrá-lo.
>     */
>
>    vcli_id = null;
>
>    select cli_id
>    from cliente
>    where cli_nome = :va_cli_nome
>    into :vcli_id;
>
>  if (:vcli_id is not null) then
>  suspend;
>
>        insert into cliente( "campo", "campo", cli_nome)
>        values (0, 0, :va_cli_nome);
>
>    select cli_id
>    from cliente
>    where cli_nome = :va_cli_nome
>    into :vcli_id;
>
>    suspend;
>
> end
>
>
>
> ----- Original Message -----
> From: "Edson Marco Ferrari Junior" <edmafer em gmail.com>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Friday, April 07, 2006 10:35 AM
> Subject: [firebase-br] Stored procedures
>
>
> Estou tentando criar algumas procedures que primeiro verifique se
> existo o registro na tabela, e se existir ela me retorna o id, caso
> contrário, ela faz a inserção, e me retorna o id.
>
> O problema, é que ela fazendo ou não a inserção (a inserção funciona)
> ela sempre me retorna "null".
>
> A procedure:
>
> create procedure sp_save_cliente(va_cli_nome varchar(25))
> returns(
>    vcli_id integer
> )
> as
> begin
>    /*
>     * Preciso do id do cliente, caso ele não
>     * esteja cadastrado, vou cadastrá-lo.
>     */
>    vcli_id = null;
>
>    select cli_id
>    from cliente
>    where cli_nome = :va_cli_nome
>    into
>        :vcli_id;
>
>    if (vcli_id is null) then
>    begin
>        insert into cliente
>        values
>        (
>            0,
>            0,
>            :va_cli_nome
>        );
>
>        select max(cli_id)
>        from cliente
>        into
>            :vcli_id;
>    end
> end;
>
> E a chamo da seguinte forma:
>
> select vcli_id from sp_save_cliente ('NOME DO CLIENTE');
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.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
>


--
/*
 * Edson Marco Ferrari Junior
 * edmafer em gmail.com
 * http://www.itasoa.com.br (no dia que funcionar eu aviso)
 */




Mais detalhes sobre a lista de discussão lista