Estou tentando retornar o valor de um campo autoInc após INSERT. Já tentei com getInt apos o execute do preparedStatement e com CallableStatement.
Alguma sugestão?
Pegando valor do auto-incremento após INSERT
13 Respostas
Tentei com esse tbm, recebo “Não suportado”
Banco: Oracle…
Tem alguma outra maneira?
Da uma olhadinha nesse meu outro post: http://www.guj.com.br/posts/list/80021.java
Nele eu explico melhor meu problema… Fiz outro post com outro nome, e nesse pelo menos vc viu! :lol:
Estava em outro micro, onde está o programa, ai ficou mais facil de colocar o exemplo.
[s]
Cara, se no seu caso você estiver usando Oracle e o objeto do auto-incremento for um Sequence, você pode conseguir o valor atual do objeto fazendo essa outra query:
SELECT <NOME_DA_SEQUENCE>.CURRVAL FROM DUAL
[]'s.
É Oracle sim!
Ainda não tinha usado isso…
Então faço logo após a instrução do SELECT…
Vou testar…
Valeu!
O problema é que quando seleciono do DUAL, ele já incrementa…
Consegui consultando da View All_Sequences …
Valeu…
o uso de uma sequence no Oracle é:
select seq_mat.nextval from dual ; – ultimo numero +1
select seq_mat.currval from dual; – busca o ultimo numero da sequence da conexão do seu usuário
muito utilizado pra transação onde varios usuários ao mesmo tempo utiliza um processo e não vai haver duplicação de numero.
abs
Cara, se no seu caso você estiver usando Oracle e o objeto do auto-incremento for um Sequence, você pode conseguir o valor atual do objeto fazendo essa outra query:SELECT <NOME_DA_SEQUENCE>.CURRVAL FROM DUAL[]'s.
Tem so um probleminha, aconselho pegar o nextval e armazenar numa variável para retornar o valor pois e mais garantido
o currval poderia retornar o valor ja incrementado por outro usuário nesse meio tempo. o nextval vai garantir que este valor
seja so seu valeu…
long sequencia = retorno da select “select sequencia.nextval from dual”
insert into tabela(id,valorA)values(sequencia,valorA)
return sequencia.
O problema é que quando seleciono do DUAL, ele já incrementa…
Consegui consultando da View All_Sequences …Valeu…
sim raphael, e isso mesmo, isto vai garantir que ninguem mais vai pegar aquele numero
ja pensou nao possiblilidade de transações concorrentes???
O next val, ira te proteger da concorrência.
O nextval, ira te proteger da concorrência.