简体   繁体   English

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

[英]PostgreSQL - Use a function to name a column in a select query

I'm trying to set the name of a column in a 'select .. from' query dinamically. 我试图动态地设置'select .. from'查询中的列名称。 So I created a function to return the name of the column and tried to use it in a select query. 因此,我创建了一个函数以返回列的名称,并尝试在选择查询中使用它。

The function is this one: 功能是这个:

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;

And I've tried things like: 我已经尝试过类似的事情:

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

But none of them works. 但是它们都不起作用。

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

I am not well versed in sql but you may try this: 我不太精通sql,但您可以尝试以下方法:

DECLARE @query NVARCHAR(MAX);

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

execute @query;

Example: 例:

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

execute @query;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM