Olá a todos.
Não sei se dá pra fazer isso, mas…
Eu passo esse comando abaixo para o PreparedStatement e até ai tudo certo.
DECLARE
nu_sequencial NUMBER;
BEGIN
SELECT tabela.NEXTVAL
INTO sequencial
FROM DUAL;
INSERT INTO tabela 2(
codigo,
nome)
VALUES (sequencial,?);
END;
Só que eu preciso do sequencial gerado, pois utilizo-o em outros lugares.
Pergunta: dá pra eu retornar esse sequencial gerado nesse proprio SQL?
É que eu não queria fazer uma nova consulta para buscar esse sequencial, pois vou ter que fazer o procedimento acima muitas vezes.
Valeu!!
Kra, vc pode usar o Commons BeanUtils para trabalhar com RowSets.
Com um RowSet vc pode manter os dados recebidos do resultset de forma independente do PreparedStatement. Vc executa uma vez só e guarda no RowSet. Sei que no java tem uma implementação da sun para RowSets, mas parece ser um pouco mais chata de utilizar
Olha uma exemplo:
[code]
RowSetDynaClass rowSet = new RowSetDynaClass(
statement.executeQuery(), false );
List lista = rowSet.getRows();
// agora para iterar é facinho
DynaBean dynaBean = null;
for ( int i = 0; i < lista.size(); i++ ) {
dynaBean = ( DynaBean ) lista.get( i );
Object obj = dynaBean.get( “NOME DA COLUNA” ); // retorna um Object
}[/code]
Veja se funciona 
Falow!
davidbuzatto
obrigado pela atenção, mas eu não entendi oq vc quis dizer (ou não fui muito claro na descrição do meu problema)…
oq eu gostaria de saber é se tem jeito de eu retornar algum valor dentro desse mesmo SQL e pega-lo no RESULTSET, para não ter que fazer outro acesso só para pegar esse valor.Exemplo:
DECLARE
nu_sequencial NUMBER;
BEGIN
SELECT tabela.NEXTVAL
INTO sequencial
FROM DUAL;
INSERT INTO tabela 2(
codigo,
nome)
VALUES (sequencial,?);
// exemplo
return sequencial;
END;
Até tentei usar o return, mas parece q o preparedstatement ta tratando esse meu comando sql como uma procedure e não uma função…
Obs.: O banco de dados é Oracle.
Valeu!!
Vc quer q o seu resultset mude toda vez q vc alterar o parâmetro do preparedStatement? Vc vai precisar executar a query de novo.
Eu pensei q vc queria fazer a consulta e manter ela em um objeto que mesmo após fechar a conexão o objeto ficasse vivo. Se vc fechar a conexão q gerou o result set ele tbm é fechado, como falei, pensei q vc quizesse uma forma de manter os dados carregados.
Falow!
Olá,
Crie uma procedure ou function que retorne esse valor pra vc.
Exemplos:
http://www.onjava.com/pub/a/onjava/2003/08/13/stored_procedures.html?page=2
[]´s
Rodrigo