[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