PostgreSQL-使用函数在选择查询中命名列

时间:2019-01-29 22:41:19

标签: sql postgresql postgresql-9.2

我试图动态地设置“ select..from”查询中的列名。因此,我创建了一个函数以返回列的名称,并尝试在选择查询中使用它。

功能是这样的:

CREATE OR REPLACE FUNCTION get_column_name(iddoc int, campo text) RETURNS text
AS $$
#print_strict_params on
DECLARE
campoid text;
BEGIN

    SELECT campo_id INTO STRICT campoid
    FROM campos_td c
    JOIN (SELECT field4, field3 
        FROM frm7 
        WHERE iddocumento = iddoc) f ON c.tema_id = f.field3

    RETURN 'field10' || campoid;
END
$$ LANGUAGE plpgsql;

我已经尝试过类似的事情:

SELECT get_column_name(2, 'Size') FROM frm7
SELECT f.get_column_name(2, 'Size') FROM frm7 as f

但是它们都不起作用。

2 个答案:

答案 0 :(得分:1)

使用pgsql EXECUTE command,您可以运行任意SQL字符串,特别是使用在运行时传递的列名构建的SQL字符串。

答案 1 :(得分:-1)

我不太熟悉sql,但您可以尝试以下方法:

DECLARE @query NVARCHAR(MAX);

set @query = 'SELECT ' + get_column_name(2, 'Size') + ' FROM frm7';

execute @query;

示例:

DECLARE @query NVARCHAR(MAX);
DECLARE @colName NVARCHAR(MAX) = 'col1'; 
set @query = 'SELECT ' + @colName + ' FROM frm7';

execute @query;