PostgreSQL - 使用函数命名 select 查询中的列
PostgreSQL - Use a function to name a column in a select query
我正在尝试动态设置 'select .. from' 查询中的列名称。所以我为 return 列的名称创建了一个函数,并尝试在 select 查询中使用它。
函数是这个:
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
但其中 none 个有效。
我不太精通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;
pgsql EXECUTE
command 允许您 运行 一个任意的 SQL 字符串,特别是,您使用在 [=15 处传入的列名构建的字符串=]时间。
我正在尝试动态设置 'select .. from' 查询中的列名称。所以我为 return 列的名称创建了一个函数,并尝试在 select 查询中使用它。
函数是这个:
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
但其中 none 个有效。
我不太精通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;
pgsql EXECUTE
command 允许您 运行 一个任意的 SQL 字符串,特别是,您使用在 [=15 处传入的列名构建的字符串=]时间。