Parametro de Saída PostgreSQL

Pessoal utilizo PostgreSQL e quero retornar um valor ao realizer um insert. Através

do CallableStatement.registerOutParameter sei que consigo setar um parâmetro.

Mas ao executar gera um exception: Este comando não declara um parâmetro de saída. Utilize {? = chamada…} para declarar um.

Como que declaro esse parâmetro de saída na minha string SQL?

Obs: Não utilizo Stored Procedure.

pergunta dificil? :frowning:

A minha string sql está assim

INSERT INTO tab (c1,c2,c3) VALUES (v1,v2,v3) RETURNING id

so queria obter esse returning.

alguem por aqui?

[quote=khaue_viana_@hotmail.com]A minha string sql está assim

INSERT INTO tab (c1,c2,c3) VALUES (v1,v2,v3) RETURNING id

so queria obter esse returning.[/quote]

O que voce quer retornar (v1,v2 ou v3), por favor explique???

[quote=josue carrecon][quote=khaue_viana_@hotmail.com]A minha string sql está assim

INSERT INTO tab (c1,c2,c3) VALUES (v1,v2,v3) RETURNING id

so queria obter esse returning.[/quote]

O que voce quer retornar (v1,v2 ou v3), por favor explique???[/quote]

Quero retornar o id, que está após o RETURNING na string.

Alguém para me ajudar?

pq vc não usa esse comando?

SELECT CURRVAL( pg_get_serial_sequence('nome_tabela','nome_coluna_do_id'));

isso só vai funcionar se sua coluna onde contem o id tiver uma sequence, ou for do tipo serial…

Pq quando executo até no próprio POSTGRESQL

E minha coluna é do tipo Serial

aparece isso:

ERRO: valor atual da sequência “tab_empresa_id_empresa_seq” ainda não foi definido nesta sessão

Ajuda!

Aqui rodou normal. Tenho uma tabela chamada teste com uma coluna do tipo serial chamada id.
Executei o seguinte comando:

SELECT CURRVAL( pg_get_serial_sequence('teste','id') ); e me retornou o id certinho…

Sério kra?

A consulta ta certinha, putz, num sei o que ta acontecendo!

como chama sua tabela e seu campo do tipo serial?

tab_empresa e id_empresa

[quote=khaue_viana_@hotmail.com]Pq quando executo até no próprio POSTGRESQL

E minha coluna é do tipo Serial

aparece isso:

ERRO: valor atual da sequência “tab_empresa_id_empresa_seq” ainda não foi definido nesta sessão

Ajuda![/quote]
E isso não será porque estás a executar antes de inserir os dados?

você tem q executar Após o comando INSERT.

SELECT CURRVAL( pg_get_serial_sequence('tab_empresa','id_empresa') );

aauahuahuaa

perfeito rapaz, é isso msm!

Deu certo! :smiley:

[code]INSERT INTO tab_empresa (nm_fantasia) VALUES (‘GUJ’);

SELECT CURRVAL(pg_get_serial_sequence(‘tab_empresa’,‘id_empresa’)) ;[/code]

Obrigados aos dois que me ajudaram!

Abraços!

blz cara =]…

o q precisar, to ae tentando ajudar rsrs…
abrcs