Postgresql 使用ems sql manager在postgre过程中将列作为参数传递时出错

Postgresql 使用ems sql manager在postgre过程中将列作为参数传递时出错,postgresql,stored-procedures,error-handling,Postgresql,Stored Procedures,Error Handling,我有两张桌子:订单桌和客户桌。订单表包含订单id、客户id,其中订单id是客户下的不同订单,客户id是客户id(常规)。customer表包含customer\u name和customer\u id。order表和customer表之间的关系是customer\u id列 我试图使用ems sql管理器在PostgreSQL中使用过程。该过程将使用列名作为参数,并使用以下过程从表中返回列中的值。在这里,我们试图从customer表中查找customer\u name列中的值 create or

我有两张桌子:订单桌和客户桌。订单表包含订单id、客户id,其中订单id是客户下的不同订单,客户id是客户id(常规)。customer表包含customer\u name和customer\u id。order表和customer表之间的关系是customer\u id列

我试图使用ems sql管理器在PostgreSQL中使用过程。该过程将使用列名作为参数,并使用以下过程从表中返回列中的值。在这里,我们试图从customer表中查找customer\u name列中的值

create or replace function customers(name TEXT)
returns table(cust_name TEXT)
as
$$
    SELECT $1
    from customer
$$
language sql;

select customers('customer_name');
这里没有什么评论- 1.虽然我已经指定我正在使用postgresql,但我已经在该语言中指定了sql,因为语言plpgsql不起作用。 2.此过程返回1列重复customer_name作为customer表中所有记录的值。我猜它是将customer_name作为文本值,而不是在select系统中使用它作为列名

为了更正第二条注释,我在stack overflow中使用了这个链接,它使用传递列中的execute语句作为参数-

因此,我复制了第二个示例并尝试实现它-

CREATE OR REPLACE FUNCTION customers(name regclass)
  RETURNS table(cust_name TEXT)AS
$func$    
   EXECUTE 'SELECT '|| name ||' FROM CUSTOMER';
$func$ LANGUAGE sql;
但这是在execute语句中抛出一个错误语法错误

因此,我尝试了堆栈溢出中给出的另一种方法-

代码在这里-

CREATE OR REPLACE FUNCTION customers(name regclass)
      RETURNS table(cust_name TEXT)AS
    $func$    
       EXECUTE 'SELECT name FROM CUSTOMER' using name;
    $func$ LANGUAGE sql;

select customers('customer_name');
但这也会在执行时抛出语法错误

在用尽所有选项之后,我对如何在过程中传递列名感到困惑。请注意,Declare语句也不起作用,这也在stackoverflow中的一篇文章中给出

有人能给我提供一个正确的查询,将列作为过程/存储函数中的参数传递给我吗?提前谢谢


请注意,我使用的是Postgre Sql 8.4版和EMS Sql Manager 5.6版。

为什么要在
执行'SELECT TABLE'| | name | | FROM CUSTOMER'中编写“SELECT TABLE”?如果没有
我写的错误执行'SELECT'| | name | | FROM CUSTOMER';但这也是在“Execute”或“Execute”附近抛出语法错误