Procedure para incrementar campo e retornar valor
20/12/2003
0
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
Posts
14/01/2004
Aroldo Zanela
Por que você não utiliza Identity? Já que o tipo é inteiro.
17/01/2004
Marcelo.l
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.
18/01/2004
Fabricio_saldanha
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.
18/01/2004
Marcelo.l
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.
19/01/2004
Fabricio_saldanha
Qualquer coisa estou a disposição.
Clique aqui para fazer login e interagir na Comunidade :)