2010-10-19 36 views
2

我想在pl/pgsql中做一個通用函數。我面臨一個我無法弄清楚的問題。請參閱聲明塊我爲某些參數賦值。我想知道如何將它們用作查詢的組件。 (例如:開始/結束塊,groupby_join_field)如何在pl/pgSQL中使用聲明的參數作爲查詢的組件?

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

我不知道我是否正確理解你的問題,但我會給它一個鏡頭。

您可以使用pl/pgSQL EXECUTE命令執行任意字符串。所以你只需要建立你的查詢作爲一個字符串。

+0

謝謝。這就是它。對於那些想要更多細節的人:http://bit.ly/a5opXy第39.5.4章 – Spredzy 2010-10-19 09:47:30

相關問題