如何在LL / pgSQL中使用声明的参数作为查询的组件?

时间:2010-10-19 09:10:49

标签: postgresql plpgsql

我正在尝试在pl / pgsql中执行泛型函数。我正面临一个我无法弄清楚的问题。请参阅声明块我为一些参数赋值。我想知道如何将它们用作查询的组件。 (例如:BEGIN / END块,groupby_join_field)

  CREATE OR REPLACE FUNCTION drillThrough(whereclause anyarray, groupbyclause anyarray) RETURNS void AS $$

    DECLARE
            where_table varchar(19) := whereclause[1];
            where_join_field varchar(19) := whereclause[2];
            where_value_field varchar(19) := whereclause[3];
            where_value varchar(19) := whereclause[4];

            groupby_table varchar(18) := groupbyclause[1];
            groupby_join_field varchar(18) := groupbyclause[2];
            groupby_value_field varchar(18) := groupbyclause[3];
    BEGIN
            INSERT INTO test SELECT dim_date.groupby_join_field, 1 FROM dim_date;
    END;
    $$ LANGUAGE plpgsql;

欢迎任何想法,

编辑:

在这种情况下,goupby_join_field的值为year_id,所以我希望引擎能够理解dim_date.year_id

1 个答案:

答案 0 :(得分:1)

我不知道我是否理解你的问题,但我会试一试。

您可以使用pl / pgSQL EXECUTE命令执行任意字符串。因此,您只需将查询构建为字符串。