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

Marcelo Guilherme Tamanini marcelo_tamanini em hotmail.com
Ter Fev 10 15:38:15 -03 2009


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


Mais detalhes sobre a lista de discussão lista