将字段值传递给临时变量

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

【讨论】:

以上是关于将字段值传递给临时变量的主要内容,如果未能解决你的问题,请参考以下文章

函数可以返回结构体的原因

指针值传递指针的指针指针的引用无法返回临时变量地址

学习第56天

js---交换两个值

给data()临时变量进行test injection

js 解决两值交换