以列名为参数的PostgreSQL函数

以列名为参数的PostgreSQL函数,postgresql,function,arguments,dynamic-sql,Postgresql,Function,Arguments,Dynamic Sql,我有一个表tab1,有四列col1、col2、col3和col4 我想创建一个类似f4a的函数,其中a由用户定义,如果用户类型选择f4col1,则会得到列tab1.col1 有没有办法在PostgreSQL中创建这样的函数?在这里使用函数确实没有很好的理由使事情复杂化。 你应该做的是: SELECT col1 FROM tab1; 您的要求: 创建或替换函数f4\u col文本 返回表列x文本 语言plpgsql AS $func$ 开始 返回查询执行 格式为“从表1中选择%I”,\u col

我有一个表tab1,有四列col1、col2、col3和col4

我想创建一个类似f4a的函数,其中a由用户定义,如果用户类型选择f4col1,则会得到列tab1.col1


有没有办法在PostgreSQL中创建这样的函数?

在这里使用函数确实没有很好的理由使事情复杂化。 你应该做的是:

SELECT col1 FROM tab1;
您的要求:

创建或替换函数f4\u col文本 返回表列x文本 语言plpgsql AS $func$ 开始 返回查询执行 格式为“从表1中选择%I”,\u col; 终止 $func$; 电话:

您需要动态SQL,因为SQL不允许参数化标识符

进一步阅读:


这个问题涉及面很广。如果您有特定的问题,而不仅仅是需求转储,您应该尝试一些东西并返回。提示:您可以查询和加入,并可能。当多个表都有一个类似于函数输入的列时,您应该考虑如何处理这种情况?
SELECT * FROM f4('col1');