Retornar id do registro gravado em oracle

3 respostas
luistiagos

É o seguinte eu salvo uma tabela via jdbc no oracle e apos disso preciso recuperar o id dela…
tem como eu fazer isto sem precisar fazer um select com os valores que inseri na tabela apos incluilos nela?

3 Respostas

kaique

Cara, não sei qual a forma desse ID na sua tabela, mas se você estiver usando o objeto Sequence para gerar essas chaves, execute o seguinte comando:

SELECT <NOME_DA_SEQUENCE>.CURRVAL FROM DUAL

Acho que o comando é esse para retornar o valor atual de uma sequence…

[]'s.

nbluis

kaique:
Cara, não sei qual a forma desse ID na sua tabela, mas se você estiver usando o objeto Sequence para gerar essas chaves, execute o seguinte comando:

SELECT <NOME_DA_SEQUENCE>.CURRVAL FROM DUAL

Acho que o comando é esse para retornar o valor atual de uma sequence…

[]'s.


O problema disso é a concorrência.

Normalmente se faz o select na sequence.nextval antes para recuperar o id unico e insere já com o id no banco.

vitorh.campos

Você pode usar a cláusula RETURNING para retornar o valor gravado:

INSERT INTO CLIENTES (CODCLIENTE, <outros campos>) VALUES (SEQ_CLIENTE.NEXTVAL, <outros campos>) RETURNING CODCLIENTE INTO :CODCLIENTE
Isso já deve resolver o seu problema… :smiley:

Criado 20 de dezembro de 2007
Ultima resposta 20 de dez. de 2007
Respostas 3
Participantes 4