将字段值传递给临时变量
Posted
技术标签:
【中文标题】将字段值传递给临时变量【英文标题】:passing field values into temp variables 【发布时间】:2014-05-15 13:03:07 【问题描述】: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 个字段,现在我需要将这些字段传递给两个临时变量。请给我您宝贵的建议。
【问题讨论】:
我最有价值的建议是让您解释您想要实现的目标。我的第二个最有价值的建议是查看fine manual for PL/pgSQL - SQL Procedural Language 【参考方案1】: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
【讨论】:
以上是关于将字段值传递给临时变量的主要内容,如果未能解决你的问题,请参考以下文章