X-Original-To: pgsql-hackers-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [200.46.204.144]) by svr1.postgresql.org (Postfix) with ESMTP id 33BDD56254; Fri, 25 Feb 2005 06:49:15 +0000 (GMT) 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 52388-07; Fri, 25 Feb 2005 06:49:09 +0000 (GMT) Received: from mailbox.samurai.com (mailbox.samurai.com [205.207.28.82]) by svr1.postgresql.org (Postfix) with ESMTP id 034AB52A60; Fri, 25 Feb 2005 06:49:07 +0000 (GMT) Received: from localhost (mailbox.samurai.com [205.207.28.82]) by mailbox.samurai.com (Postfix) with ESMTP id E73E518CFF9; Fri, 25 Feb 2005 01:49:24 -0500 (EST) Received: from mailbox.samurai.com ([205.207.28.82]) by localhost (mailbox.samurai.com [205.207.28.82]) (amavisd-new, port 10024) with LMTP id 01389-01; Fri, 25 Feb 2005 01:49:22 -0500 (EST) Received: from [61.88.101.19] (unknown [61.88.101.19]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mailbox.samurai.com (Postfix) with ESMTP id 7027818CD64; Fri, 25 Feb 2005 01:49:20 -0500 (EST) Message-ID: <421ECA30.8040007@samurai.com> Date: Fri, 25 Feb 2005 17:48:16 +1100 From: Neil Conway User-Agent: Debian Thunderbird 1.0 (X11/20050116) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Tom Lane Cc: Gavin Sherry , pgsql-hackers@postgresql.org, pgsql-jdbc@postgresql.org Subject: Re: Where are we on stored procedures? References: <26903.1109275995@sss.pgh.pa.us> <29295.1109295241@sss.pgh.pa.us> In-Reply-To: <29295.1109295241@sss.pgh.pa.us> Content-Type: multipart/mixed; boundary="------------060809000006060903010803" X-Virus-Scanned: by amavisd-new at mailbox.samurai.com X-Virus-Scanned: by amavisd-new at hub.org X-Spam-Status: No, hits=0.042 tagged_above=0 required=5 tests=AWL X-Spam-Level: X-Archive-Number: 200502/824 X-Sequence-Number: 64652 This is a multi-part message in MIME format. --------------060809000006060903010803 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Tom Lane wrote: > Essentially I'm thinking about the JDBC solution, but automated a bit > better. So would your proposal invent a new "stored procedure" construct, or just add some sugar to the existing function stuff? i.e. will you be able to issue a CREATE FUNCTION that specifies OUT parameters? > This doesn't address the question of SETOF results, of course. I'm > leaning towards returning those as cursors. This is part of the reason I liked the approach of introduced SQL-level variables. Besides being a feature that has some use in itself, it could be extended reasonably cleanly to allow (effectively) SETOF variables and rowtype variables. > Well, I think that when people ask us for "stored procedures", most of > them mean that they want transaction control. Yes, that is certainly what Gavin and I spent most of our time banging our heads against the wall on :( > But if you can pass over what you have, I'd like to see about > pressing forward. Sure, I've attached a very WIP patch with the utility command definitions; unfortunately I don't think it will be of much use, as much of it is CREATE PROCEDURE-related boilerplate. Gavin will update the matching-arguments-by-name code to HEAD at some point in the future; I believe that works fine for functions (since we just error out in case of ambiguity), so we can include it in 8.1 independently on any other work on SPs. -Neil --------------060809000006060903010803 Content-Type: application/gzip; name="spdevel-2.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="spdevel-2.patch.gz" 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 --------------060809000006060903010803--