Procedure para incrementar campo e retornar valor

20/12/2003

0

Olá, Gente.

Estou começando com SQL-Server 7 e estou apanhando em alguns detalhes.

Tenho em um banco de dados uma tabela que possui
um único campo (Val_Atual tipo Integer) com um único registro.

Preciso fazer uma procedure que incremente o valor deste campo e que me retorne o valor depois de atualizado.



Se puderem me ajudar agradeço desde já.


Marcelo.l

Marcelo.l

Responder

Posts

14/01/2004

Aroldo Zanela

Colega,

Por que você não utiliza Identity? Já que o tipo é inteiro.


Responder

17/01/2004

Marcelo.l

Olá, Aroldo.

Desculpe por responder agora, (estava viajando).

O problema com campos Identity (ou autoinc) é que vc precisa salvar a tabela Master, recuperar o valor do campo Autoinc (que no caso também é o campo de ligação com a tabela Detail) aplicar este valor para cada registro da tabela Detail e só então salvar a tabela Detail.

Para o cadastro que estou fazendo é INDISPENSAVEL salvar o ´pacote´ todo, ou seja, salvar Master e Detail ao mesmo tempo. Então estou simulando um Generator do Firebird numa base SQL-Server.

Se houver outro modo de fazer isto (salvar Master e Detail juntos) me avise.

Valeu. Um abraço.


Responder

18/01/2004

Fabricio_saldanha

Marcelo,

a algum tempo atraz eu te mandei uma procedure que já fazia este incremento e depois recuperava o valor atual, agora se o objetivo é criar um relacionmento master detail não existe problem em utilizar o campo autoincremento o que precissa ser feito é retirar o controle de transação do sql e passar a controlar a transação dentro do delphi não existe problema algum nisso qualquer duvida estou a disposição.

Fabricio Saldanha.


Responder

18/01/2004

Marcelo.l

Olá, Fabricio.

Deixa ver se eu entendi.

O que vc propoem é que eu abra uma transação, salve a tabela master, recupere o valor do campo Identity, aplique o valor para os registro da tabela detail, salve a tabela detail e só então feche a transação?

É isto?

Ah!!! Quanto a solução à aquela precedure funcionou perfeitamente.
Eu também estava errando em abrir a StoredProc com ExecProc e não com Open.

Novamente, muito obrigado.

Peace. Out.


Responder

19/01/2004

Fabricio_saldanha

É isso mesmo, você deve utilizar o controle de transação do ADO ou outra tecnologia qualquer que esteja utilizando para conectar ao banco de dados. Como já havia dito eu uso normalmente e funciona.

Qualquer coisa estou a disposição.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar