[firebase-br] Stored procedure que retorna o ID após inserir

Joao Batista Santos mrjbs em ig.com.br
Ter Fev 10 20:46:42 -03 2009


Opa Marcelo

Não se incomode com demora.
Bom mesmo é ter o resultado -
velocidade só para o processamento
obrigado rapaz


2009/2/10 Marcelo Guilherme Tamanini <marcelo_tamanini em hotmail.com>

>
> Desculpa pela demora João.
> Estava fazendo os testes ainda, mas aqui funcionou corretamente, só estou
> querendo ver como retornar um sqlcode, caso ocorra qualquer tipo de erro.
>
> Seque o código abaixo:
> CREATE OR ALTER PROCEDURE STP_INCLUIRAPARELHO (
>    numeroserie integer,
>    datacoleta timestamp,
>    descricao varchar(50) character set win1252,
>    senha smallint,
>    alarmequalidade1 decimal(4,3),
>    alarmequalidade2 decimal(4,2),
>    alarmetemperatura decimal(4,1),
>    leitura logico = 0,
>    correcaotemperatura logico = 0,
>    beepadvertencia logico = 0,
>    beepalarme logico = 0,
>    beepteclado logico = 0)
> returns (
>    identity integer)
> as
> BEGIN
>  BEGIN
>  INSERT INTO TB_Aparelho (NumeroSerie, DataColeta, Descricao
>  , Senha, Leitura, CorrecaoTemperatura, AlarmeQualidade1
>  , AlarmeQualidade2, AlarmeTemperatura
>  , BeepAdvertencia, BeepAlarme, BeepTeclado)
>  VALUES (:NumeroSerie, :DataColeta, :Descricao, :Senha, :Leitura
>  , :CorrecaoTemperatura, :AlarmeQualidade1, :AlarmeQualidade2
>  , :AlarmeTemperatura, :BeepAdvertencia, :BeepAlarme, :BeepTeclado)
>  RETURNING CodAparelho
>  INTO :Identity;
>  WHEN SQLCODE -830 DO
>  EXCEPTION EQUIPAMENTO_EXISTENTE;
>  END
>  SUSPEND;
> END
>
>
>
> > Date: Tue, 10 Feb 2009 11:19:50 -0200
> > From: mrjbs em ig.com.br
> > To: lista em firebase.com.br
> > Subject: Re: [firebase-br]    Stored procedure que retorna o ID após
> inserir
> >
>  > Marcelo:
> > Esta "receita" serve para 1.5 tb?
> > pq eu teste so que não grava
> > dando o erro abaixo:
> > Invalid token.
> > Dynamic SQL Error.
> > SQL error code = -104.
> > Token unknown - line 8, char 3.
> > returning_values.
> >
> > 2009/2/9 Marcelo Guilherme Tamanini <marcelo_tamanini em hotmail.com>
> >
> > >
> > >
> > > Olá, pessoal.
> > >
> > > Mais uma dúvida sobre stored procedure.
> > >
> > > Eu tenho a seguinte stored procedure para inserção de dados em sql
> server:
> > >
> > > ...
> > > AS
> > >    SET NOCOUNT ON
> > >
> > >    -- Tenta inserir um equipamento
> > >    BEGIN TRY
> > >        BEGIN TRANSACTION
> > >
> > >        INSERT INTO TB_Aparelho (NumeroSerie, DataColeta, Descricao)
> > >        VALUES (@NumeroSerie, @DataColeta, @Descricao);
> > >
> > >        -- Retorna o último CodAparelho
> > >        SELECT @@IDENTITY FROM TB_Aparelho;
> > >
> > >        COMMIT TRANSACTION
> > >    END TRY
> > >    BEGIN CATCH
> > >        ROLLBACK TRANSACTION
> > >
> > >        -- retorna o erro, caso já exista o equipamento
> > >        SELECT -ERROR_NUMBER();
> > >    END CATCH
> > >
> > >
> > > Em firebird, como ficaria o begin commit e rollback transaction no
> > > firebird?
> > > Além disso, como seria a sintaxe para retornar o ID do último registro?
> > > E por fim, retornar um exceção caso o registro já esteja cadastrado?
> > >
> > > _________________________________________________________________
> > > Invite your mail contacts to join your friends list with Windows Live
> > > Spaces. It's easy!
> > >
> > >
> http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> _________________________________________________________________
> News, entertainment and everything you care about at Live.com. Get it now!
> http://www.live.com/getstarted.aspx
>  ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista