knowledge-database (beta)

Current group: pgsql.sql

Re: Returning a bool on DELETE in a proc.

Re: Returning a bool on DELETE in a proc.  
KÖPFERL_Robert
 Re: Returning a bool on DELETE in a proc.  
Richard Huxton
 Re: Returning a bool on DELETE in a proc.  
Karsten Hilbert
 Re: Returning a bool on DELETE in a proc.  
Michael Fuhr
From:KÖPFERL_Robert
Subject:Re: Returning a bool on DELETE in a proc.
Date:Wed, 19 Jan 2005 11:24:26 +0100
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@fuhr.org]
> Sent: Dienstag, 18. Jänner 2005 19:52
> To: KÖPFERL Robert
> Cc: pgsql-sql@postgresql.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/
>

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
From:Richard Huxton
Subject:Re: Returning a bool on DELETE in a proc.
Date:Wed, 19 Jan 2005 12:16:50 +0000
KÖPFERL Robert wrote:
> 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?

SQL doesn't support that (although I suppose it could be made to with
some pg_rows_affected() function). You'll need to use plpgsql (or
similar) if you want a result status returned.

--
Richard Huxton
Archonet Ltd

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
From:Karsten Hilbert
Subject:Re: Returning a bool on DELETE in a proc.
Date:Wed, 19 Jan 2005 14:18:47 +0100
> >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?
>
> SQL doesn't support that (although I suppose it could be made to with
> some pg_rows_affected() function).
If someone could only post that pg_rows_affected() function -
this would end all further requests for "row number in result
set" inquiries with the simple advice "use pg_rows_affected()
and join that with an integer table".

I'd know a bunch of uses right off the top of my head.

I suppose it ain't hard at all but my C skills are way to
limited to try anything like that. My understanding, too,
likely.

Karsten
--
GPG key ID E4071346 @ wwwkeys.pgp.net
E167 67FD A291 2BEA 73BD 4537 78B9 A9F9 E407 1346

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster
From:Michael Fuhr
Subject:Re: Returning a bool on DELETE in a proc.
Date:Wed, 19 Jan 2005 10:01:46 -0700
On Wed, Jan 19, 2005 at 11:24:26AM +0100, KÖPFERL Robert wrote:

> Seems that I forgot to mention that this function is intended to be written
> in SQL, not in PL/SQL.

Why SQL instead of PL/pgSQL if the former doesn't do what you need
and the latter does?

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
   

Copyright © 2006 knowledge-database   -   All rights reserved