X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (av.hub.org [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id E0F3652CB6; Fri, 19 Aug 2005 03:33:16 -0300 (ADT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024) with ESMTP id 61266-02; Fri, 19 Aug 2005 06:33:14 +0000 (GMT) Received: from tigger.fuhr.org (tigger.fuhr.org [63.214.45.158]) by svr1.postgresql.org (Postfix) with ESMTP id 4779E52CB2; Fri, 19 Aug 2005 03:33:13 -0300 (ADT) Received: from winnie.fuhr.org (winnie.fuhr.org [10.1.0.1]) by tigger.fuhr.org (8.13.3/8.13.3) with ESMTP id j7J6XA75008720 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 19 Aug 2005 00:33:13 -0600 (MDT) (envelope-from mfuhr@winnie.fuhr.org) Received: from winnie.fuhr.org (localhost [127.0.0.1]) by winnie.fuhr.org (8.13.3/8.13.3) with ESMTP id j7J6XArH078775; Fri, 19 Aug 2005 00:33:10 -0600 (MDT) (envelope-from mfuhr@winnie.fuhr.org) Received: (from mfuhr@localhost) by winnie.fuhr.org (8.13.3/8.13.3/Submit) id j7J6XAEd078774; Fri, 19 Aug 2005 00:33:10 -0600 (MDT) (envelope-from mfuhr) Date: Fri, 19 Aug 2005 00:33:10 -0600 From: Michael Fuhr To: "Marc G. Fournier" Cc: pgsql-sql@postgresql.org Subject: Re: pl/PgSQL: Samples doing UPDATEs ... Message-ID: <20050819063310.GA78746@winnie.fuhr.org> References: <20050819023618.K1002@ganymede.hub.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050819023618.K1002@ganymede.hub.org> X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.109 required=5 tests=[AWL=-0.098, UPPERCASE_25_50=0.207] X-Spam-Level: X-Archive-Number: 200508/167 X-Sequence-Number: 22395 On Fri, Aug 19, 2005 at 02:38:01AM -0300, Marc G. Fournier wrote: > I have an older PostgreSQL book here, that has chapter on pl/PgSQL in it, > but no good samples .... > > What I'm looking for is a sample of a function that returns # of rows > updated, so that I can make a decision based on that ... does anyone know > where I could find such (and others, would be great) online? Are you looking for GET DIAGNOSTICS? http://www.postgresql.org/docs/8.0/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-DIAGNOSTICS CREATE TABLE foo (id integer, name text); INSERT INTO foo VALUES (1, 'Bob'); INSERT INTO foo VALUES (2, 'Bob'); INSERT INTO foo VALUES (3, 'Jim'); CREATE FUNCTION update_foo(old_name text, new_name text) RETURNS integer AS $$ DECLARE num_rows integer; BEGIN UPDATE foo SET name = new_name WHERE name = old_name; GET DIAGNOSTICS num_rows = ROW_COUNT; RETURN num_rows; END; $$ LANGUAGE plpgsql VOLATILE STRICT; SELECT update_foo('Bob', 'Robert'); update_foo ------------ 2 (1 row) SELECT update_foo('Jim', 'James'); update_foo ------------ 1 (1 row) SELECT update_foo('Rick', 'Richard'); update_foo ------------ 0 (1 row) -- Michael Fuhr