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个字段,现在我需要将这些字段传递给两个临时变量。请给我你宝贵的建议。
答案 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