Como criar uma consulta com parâmetro no PostgreSQL

7 respostas
M

Pessoal,

Criei a seguinte tabela no PostgreSQL

CREATE TABLE estados
(
  est_uf character(2) NOT NULL,
  est_nome character varying(20) NOT NULL,
  est_regiao character varying(3),
  CONSTRAINT pk_estados PRIMARY KEY (est_uf)
)

E estou necessitando fazer uma consulta parametrizada da seguinte forma:

select est_uf as sigla, est_nome as nome
from estados
where est_regiao = 'parametro'
ou
where est_regiao like 'parametro'

onde parametro seria a sigla da região do Brasil para a qual eu executar o select acima.
Em suma, pâmetro poderia assumir os seguintes valores :
‘N’ : indicando a pesquisa dos estados da região Norte
’NE’: indicando a pesquisa dos estados da região Nordeste
’CO’ : indicando a pesquisa dos estados da região Centro-Oeste
’SE’ : indicando a pesquisa dos estados da região Sudeste
’S’: indicando a pesquisa dos estados da região Sul

Alguém poderia me ajudar com a sintaxe para se criar uma consulta parametrizada no PostgreSQL.
Pesquisei em vários tutoriais, fóruns, mas a maioria deles falava em cursores, em funções, e eu queria uma coisa bem mais simples, apenas executar a query acima de modo que em tempo de excecução eu possa preencher o valor do parâmetro(que seria comparado com o campo EST_REGIAO) e obter o resultado esperado, qual seja, a Sigla(UF) e o Nome apenas dos estados situados na região cuja sigla foi fornecida como parâmetro em tempo de execução da query.

Agradece,

Max Carvalho

7 Respostas

M

vc quer fazer isso diretamente no banco ou em java?

se for diretamente no banco, vc vai ter que criar um procedure/function, passar esses parametros e o resultado será obtido.

Se for em java, vc vai ter que usar um preparedstatment, setar os parametros na query e mandar executar.

W

As formas citadas acima são as que melhors devam resolver seu problema, mas independente da qual você escolher,
lembre-se de verifica se os parâmetros que está sendo passado para efetuar a consulta são válidos, para evitar
que seja executada uma consulta com valores inválidos.

U

Nesse exemplo eu uso (?) conhecido como Operador ternário
Fazendo uma conexão com Banco de Dados PostgreSQL

String sql = "SELECT u.nome,u.login,u.senha FROM usuarios u WHERE login=? AND senha=?";
//nesse caso a (?) indica que eu vou passar um valor. esses valores são passados na ordem! 1 (?) ps.setString(1, valor a ser passado); //e assim por diante

ps.setString(1, login);

ps.setString(2, senha);

vlw

P

O ? do preparedStatement nada tem a ver com o operador ternário…

U

O ? do preparedStatement nada tem a ver com o operador ternário…
mais eu disse pelo símbolo!

vlw

M

mario.fts:
vc quer fazer isso diretamente no banco ou em java?

se for diretamente no banco, vc vai ter que criar um procedure/function, passar esses parametros e o resultado será obtido.

Se for em java, vc vai ter que usar um preparedstatment, setar os parametros na query e mandar executar.

Meu objetivo é montar uma query parametrizada a ser utilizada em um relatório no iReport acessando diretamente uma base PostgreSQL.

Se fosse em Oracle, eu faria algo como :

select est_uf as sigla, est_nome as nome  
from estados  
where est_regiao = &{parametro}

Eu não preciso de função nem de montar uma String com uma consulta SQL em Java(pelo menos por enquanto).
O que eu necessito é saber a sintaxe correta para re-escrever o trecho

...
where est_regiao = &{parametro}
...

a ser executado em uma base PostgreSQL.
É só isto que preciso em relação a esta consulta parametrizada : re-escrevê-la na sintaxe do PostgreSQL.
Agradece,

Max

M

Alguém pode me ajudar ? Alguma dica ?
Agradece,

Max

Criado 29 de abril de 2010
Ultima resposta 6 de mai. de 2010
Respostas 7
Participantes 5