Re: Returning a bool on DELETE in a proc.

From: KÖPFERL Robert <robert(dot)koepferl(at)sonorys(dot)at>
To:
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Returning a bool on DELETE in a proc.
Date: 2005-01-19 10:24:26
Message-ID: ED4E30DD9C43D5118DFB00508BBBA76EB1656B@neptun.sonorys.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Thanks, but that was not what I was looking for.

Seems that I forgot to mention that this function is intended to be written
in SQL, not in PL/SQL. For the second one I already picked it off the
fascinating* doc (as Keith did) that GET DIAGONSTIC is the right thing.

So what variable/function is the correct SQL-equivalent to ROW_COUNT and can
it be used in the following statement ?
like DELETE...; SELECT (ROW_COUNT<>0); to return a bool value?

Or would you really suggest to change the fct's type to void?

*The doc is fascinating, because it is rather short in terms of PL/pgSQL but
if you are looking for something you can find it in some example or
mentioned in a sentence somweheewere

> -----Original Message-----
> From: Michael Fuhr [mailto:mike(at)fuhr(dot)org]
> Sent: Dienstag, 18. Jänner 2005 19:52
> To: KÖPFERL Robert
> Cc: pgsql-sql(at)postgresql(dot)org
> Subject: Re: [SQL] Returning a bool on DELETE in a proc.
>
>
> On Tue, Jan 18, 2005 at 05:04:58PM +0100, KÖPFERL Robert wrote:
>
> > I'm currently writing a function which encapsulates a
> delete and should
> > return a bool as indicator for success.
>
> How do you define success? When the delete affects one or more rows?
>
> > DELETE FROM "TariffDetails" WHERE "TariffId"=$1 and
> "BNumberPrefix"=$2;
> > SELECT TRUE;
> >
> > but this makes me not happy.
> > How can I distingruish wehter DELETE affected 0 or more
> rows and return that
> > while DELETE is not capable of returning any value?
>
> If you're using PL/pgSQL then see "Obtaining the Result Status" in
> the "Basic Statements" section of the PL/pgSQL documentation.
>
> > And is the whole function executed if the DELETE fails or
> will it stop
> > bevore the select?
>
> A PL/pgSQL function should exit immediately with an error if the
> DELETE fails. But understand that PL/pgSQL's notion of a failure
> might not match yours: trying to delete from a non-existent table
> is a failure, but deleting zero rows from an existing table isn't.
>
> --
> Michael Fuhr
> http://www.fuhr.org/~mfuhr/
>

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Richard Huxton 2005-01-19 12:16:50 Re: Returning a bool on DELETE in a proc.
Previous Message Michael Fuhr 2005-01-19 09:48:09 Re: Looking for examples of S/P