将字段值传递给临时变量

时间:2014-05-15 13:03:08

标签: postgresql

CREATE OR REPLACE FUNCTION param_labels(_region_label text, _model_label text)
RETURNS TABLE (param_label text, param_graphics_label text) LANGUAGE sql AS
$BODY$
SELECT p.param_label, p.param_graphics_label
FROM   parameters      p 
JOIN   parameter_links l USING (param_id)
JOIN   regions         r USING (region_id)
JOIN   models          m USING (model_id)
WHERE  p.active
AND    r.region_label = $1 
AND    m.model_label = $2
ORDER  BY p.param_graphics_label;
$BODY$;

在SELECT子句中的上述函数中,我有2个字段,现在我需要将这些字段传递给两个临时变量。请给我你宝贵的建议。

1 个答案:

答案 0 :(得分:0)

SQL函数中没有“变量”。您可能会对PL/pgSQL或其他一些过程语言功能感到困惑。

在plpgsql函数中您可以使用SELECT INTO一次分配多个变量。例如:
Speed up plpgsql that counts doc types in a loop?

但是您的查询不符合描述并返回一组行。您可能正在寻找临时表:

CREATE TEMP TABLE tmp AS
SELECT p.param_label, p.param_graphics_label FROM ...

例:
Using temp table in PL/pgSQL procedure for cleaning tables