Parâmetro para View?

Gostaria de saber como fazer para por parâmetro nesta view tipo id do cliente:

 SELECT pedidos.datapedido,
    pedidos.quantidade,
    pedidos.nota,
    pessoas.nome,
    pessoas.cpf,
    produtos.descricao,
    produtos.valorunitario,
    produtos.valorunitario * pedidos.quantidade AS totalpedido,
    FROM pedidos
     JOIN pessoas ON pedidos.fkpessoas = pessoas.idpessoa
     JOIN produtos ON pedidos.fkprodutos = produtos.idprodutos
  GROUP BY pessoas.nome, produtos.descricao, pedidos.datapedido, 
  pedidos.quantidade, produtos.valorunitario, pessoas.cpf, pedidos.nota;

Em qual ferramenta ou plataforma de desenvolvimento?

Se for Java: http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

Exemplo:

statement = conexao.prepareStatement("select nome, etc from sua_view where id = ?");
statement.setInt(1, id);

Se está falando de views no banco de dados, a resposta simples é que você nao passa.

Esse é um dos problemas com views, você só consegue aplicar um parâmetro no resultado inteiro dela (como no exemplo dado pela @javaflex)

Em alguns bancos de dados você pode tentar usar table functions, que pode ter um comportamento semelhante a uma view que aceita parâmetros, mas geralmente é um pouco mais burocrático de usar.

2 curtidas

É mais burocrático mesmo usar function para este caso. Function só bom quando precisamos implementar alguma lógica mais complexa (com if/while, etc) antes de retornar os dados.

@Anderela_Vieira, o campo pelo qual deseja mandar o banco filtrar terá que estar disponível na view, mas no seu SQL não é obrigatorio trazer esta coluna, como mostrei no exemplo. Lembre-se que é aconselhável criar um índice para a coluna que for usar no filtro. Como você falou em id, acredito que seja a chave primária e já tenha índice.

2 curtidas

Obrigado meninos, realmente View não vai resolver meu caso

javaflex e AbelBueno

Tanks.

Não entendi, por que não vai resolver o problema? Basta filtrar pela coluna, onde a mesma deverá estar disponível na view.

select coluna1, coluna2 from suaview where colunaquevaifiltrar = ?