2

我正在尝试在 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

4

1 回答 1

1

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

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

于 2010-10-19T09:17:02.937 回答