【问题标题】:Can I change a column title in a PostgreSQL Function?我可以更改 PostgreSQL 函数中的列标题吗?
【发布时间】:2013-11-01 18:25:31
【问题描述】:

我有一个 Postgres VIEW,它使用 plpgsql 函数四次来生成一份过期债务报告。如果该行在当前期间有一个日期,则该行中的值位于第 1 列,如果日期是上个月,则该值位于第 2 列...等等。
我用一个参数调用该函数,该参数告诉该函数计算本月债务、上个月债务、2 个月前的债务 - 或者在最后一列中计算在那之前的所有内容。

    CREATE OR REPLACE FUNCTION agedebt4(beforem integer, d_details)
    RETURNS double precision AS
     $BODY$
    /* This Func creates a column for Aged Debt Reporting from d_details table
       The beforem parameter can be entered as 0,1,2 or 3
       0 shows current period debt, 1 previous period, 2 cur period -2
       and 3 shows current period less three AND EARLIER. */
    DECLARE
      curdt date =(CURRENT_DATE);
      curdy text = substring(curdt,1,4);
      curdm text = substring(curdt,6,2);
      curdmi int = curdm::int;
      curdyi int = curdy::int;
     -- blah
     -- blah
     -- blah

视图有

SELECT agedebt4(0,d_details) AS "Current Debt", agedebt4(1,d_details) 
AS "CurrPeriod -1 Debt", agedebt4(2,d_details) AS "CurrPeriod -2 Debt", -- etc 

但我希望在函数内更改列标题。所以我实际上可以有Oct2013 DebtSep2013 DebtAug2013 DebtJuly2013+Earlier...(显然月份名称取决于执行月份)...在输出中显示。我不想从agedebt4 更改函数名称——这很好。我希望函数修改显示的列标题。

这个可以吗?

【问题讨论】:

    标签: function postgresql plpgsql columnname


    【解决方案1】:

    我确定,所以您不能从内部函数更改视图(列标签)。一个主要原因是时机。在任何执行之前指定标签并进行硬编码。所以你不能在以后改变它 - 当函数被执行时。数据类型的行为相同 - 在任何执行之前都已修复。

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      相关资源
      最近更新 更多