PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Passar parâmetros WHERE para PostgreSQL View?


Você pode usar uma função de retorno de conjunto:
create or replace function label_params(parm1 text, parm2 text)
  returns table (param_label text, param_graphics_label text)
as
$body$
  select ...
  WHERE region_label = $1 
     AND model_id = (SELECT model_id FROM models WHERE model_label = $2)
  ....
$body$
language sql;

Então você pode fazer:
select *
from label_params('foo', 'bar')

Btw:você tem certeza que quer:
AND model_id = (SELECT model_id FROM models WHERE model_label = $2)

se model_label não for exclusivo (ou a chave primária), isso gerará um erro eventualmente. Você provavelmente quer:
AND model_id IN (SELECT model_id FROM models WHERE model_label = $2)