From: | David Johnston <polobo(at)yahoo(dot)com> |
---|---|
To: | Andreas Kretschmer <andreas(at)a-kretschmer(dot)de> |
Cc: | Kevin Duffy <kevind0718(at)gmail(dot)com>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: function return update count |
Date: | 2012-01-06 16:33:10 |
Message-ID: | 540BD2EF-C815-44E2-A4C1-FE5899C3E5A6@yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
In 9.1 you could use and updatable CTE and in the main query perform and return a count. I would think plpgsql would be the better option though.
On Jan 6, 2012, at 2:29, Andreas Kretschmer <andreas(at)a-kretschmer(dot)de> wrote:
>
> Kevin Duffy <kevind0718(at)gmail(dot)com> hat am 6. Januar 2012 um 00:32 geschrieben:
>
> Hello:
>
> I am try to get a function to return the count of the rows updated within the function.
> As in the following, I wan the number of rows updated to be returned.
>
> This is a simple update, other update statements that I need to write will be complicated.
>
> CREATE OR REPLACE FUNCTION est_idio_return_stats_update()
> RETURNS integer AS
>
> '
> update est_idiosyncratic_return_stats set delta_avg_60 = avg_60 - period_61_return, delta_avg_last_24 = avg_last_24 - period_61_return, delta_avg_last_18 = avg_last_18 - period_61_return,
> delta_avg_last_12 = avg_last_12 - period_61_return, delta_avg_last_6 = avg_last_06 - period_61_return ;
> '
>
> LANGUAGE SQL ;
>
> The above returns the following:
> ERROR: return type mismatch in function declared to return integer
> DETAIL: Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING.
> CONTEXT: SQL function "est_idio_return_stats_update"
>
> ********** Error **********
>
> ERROR: return type mismatch in function declared to return integer
> SQL state: 42P13
> Detail: Function's final statement must be SELECT or INSERT/UPDATE/DELETE RETURNING.
> Context: SQL function "est_idio_return_stats_update"
>
>
> Thanks for your kind assistance.
>
>
> KD
>
>
> I think, you can rewrite this to pl/pgsql (language, not sql) and than you can use
> GET DIAGNOSTICS integer_var = ROW_COUNT;
>
>
>
>
>
>
> Andreas
>
>
>
>
>
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Phoenix Kiula | 2012-01-06 16:41:08 | URGENT: temporary table not recognized? |
Previous Message | Tom Lane | 2012-01-06 15:52:20 | Re: Running multiple versions |