Re: cursor and for update

From: Maciej Piekielniak <piechcio(at)isb(dot)com(dot)pl>
To: pgsql-sql(at)postgresql(dot)org
Subject: Re: cursor and for update
Date: 2006-03-28 09:13:03
Message-ID: 1265912543.20060328111303@isb.com.pl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello Wiebe,

Tuesday, March 28, 2006, 2:42:20 AM, you wrote:

>>
WC> Fist, what's the error you get?

ERROR: missing ".." at end of SQL expression
CONTEXT: compile of PL/pgSQL function "uporzadkuj_reguly" near line 7

WC> Second, what does "rekord" do? You don't seem to use it.

Yes, i don't need it.

WC> Third, can you quote the language? I always say plpgsql without the
WC> quotes, but I'm not sure if using quotes is not allowed (and I'm too
WC> lazy to check :)).

WC> Also, why don't you have a "RETURNS VOID" function, which you can end
WC> with "RETURN;"

OK

WC> But what you might be stuck on is that you have a column and variable
WC> with the same name. Try to give the variables "tabela" and "lancunch"
WC> different names.
OK

WC> Lastly, if you use postgres 8, you can quote your function with $$
WC> instead of ' (meaning ...$$ AS DECLARE BEGIN END;$$...), so that you
WC> won't get the ugly syntax highligting that most editors will give you
WC> when quoting with '.
I have postgres 7.4

create or replace function uporzadkuj_reguly(text,text) RETURNS VOID AS
'
DECLARE
licznik integer:=1;

reguly CURSOR FOR SELECT * from firewall ORDER BY id_firewall WHERE
tabela=$1 and lancuch=$2 for UPDATE;
BEGIN
for i in reguly LOOP
UPDATE firewall SET id_firewall=licznik WHERE CURRENT OF reguly;
licznik:=licznik+1;
END LOOP;

return;
END;'
LANGUAGE 'plpgsql';

--
Best regards,
Maciej mailto:piechcio(at)isb(dot)com(dot)pl

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Wiebe Cazemier 2006-03-28 09:59:13 Re: cursor and for update
Previous Message Achilleus Mantzios 2006-03-28 08:16:06 Proposed dbmirror change