X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (unknown [64.117.224.193]) by svr1.postgresql.org (Postfix) with ESMTP id 64CDA30EF49 for ; Tue, 17 Jun 2003 02:18:08 +0000 (GMT) Received: from svr1.postgresql.org ([64.117.224.193]) by localhost (svr1.postgresql.org [64.117.224.193]) (amavisd-new, port 10024) with ESMTP id 17567-08 for ; Mon, 16 Jun 2003 23:17:57 -0300 (ADT) Received: from megazone.bigpanda.com (megazone.bigpanda.com [63.150.15.178]) by svr1.postgresql.org (Postfix) with ESMTP id 7416E30EF1C for ; Mon, 16 Jun 2003 23:17:57 -0300 (ADT) Received: by megazone.bigpanda.com (Postfix, from userid 1001) id 5E6A6D62D; Mon, 16 Jun 2003 19:17:57 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by megazone.bigpanda.com (Postfix) with ESMTP id 4E0F35C0F; Mon, 16 Jun 2003 19:17:57 -0700 (PDT) Date: Mon, 16 Jun 2003 19:17:57 -0700 (PDT) From: Stephan Szabo To: "Tony G. Harris" Cc: Subject: Re: Trouble porting a Oracle PL/SQL procedure to PL/pgSQL In-Reply-To: <20030616.205744.-16302819.1.tgharris_1@juno.com> Message-ID: <20030616191549.W78774-100000@megazone23.bigpanda.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Archive-Number: 200306/166 X-Sequence-Number: 13924 On Mon, 16 Jun 2003, Tony G. Harris wrote: > Hello. I'm using PostgreSQL to learn SQL and SQL-based languages. The > text I'm using (SAMS Teach Yourself SQL in 21 Days, 3rd.ed.) references > Oracle in its examples, though I can usually get PostgreSQL to work > almost as well. > > Well, I'm almost to the end of the book and I'm trying to port some of > the book's PL/SQL examples to PL/pgSQL, with mixed success. In this > case, I translated > > BEGIN > DECLARE > UnknownPayType EXCEPTION; > CURSOR pay_cursor IS > SELECT name, pay_type, pay_rate, eff_date, sysdate, > rowid > FROM pay_table; > IndRec pay_cursor%ROWTYPE; > . . . > END; > / > > to this: > > CREATE OR REPLACE FUNCTION update_pay() RETURNS VOID AS ' > DECLARE > pay_cursor CURSOR IS > SELECT name, pay_type, pay_rate, eff_date, current_date, oid > FROM pay_table; > IndRec pay_cursor%ROWTYPE; > cOldDate DATE; > . . . > END; > ' > LANGUAGE 'plpgsql'; > > The problem is, when I call the function, I get: > > sql-practice=# select update_pay(); > ERROR: pay_cursor: no such class > WARNING: plpgsql: ERROR during compile of update_pay near line 2 > WARNING: plpgsql: ERROR during compile of update_pay near line 2 > ERROR: pay_cursor: no such class > > I tried several ways of defining pay_cursor, with the same result. > What am I to do? I think it's complaining because you can't use pay_cursor%ROWTYPE. Maybe declaring IndRec as being of type record may work (don't know for certain).