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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar