Re: Use of delete...returning in function problem

From: "Bart Degryse" <Bart(dot)Degryse(at)indicator(dot)be>
To: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Use of delete...returning in function problem
Date: 2007-09-04 12:09:59
Message-ID: 46DD6736.A3DD.0030.0@indicator.be
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Amazing what a bracket can do :)
Thanks for the help.

>>> Richard Huxton <dev(at)archonet(dot)com> 2007-09-04 12:45 >>>
Bart Degryse wrote:
> I'm trying to use a delete statement with returning clause in a function:

> FOR rec IN (
> delete from billing_errors_new where errortypeid IN (1,2) returning *)
> LOOP

> I get following error though:
> ERROR: syntax error at or near "delete" at character 4
> QUERY: ( delete from billing_errors_new where errortypeid IN (1,2) returning *)
> CONTEXT: SQL statement in PL/PgSQL function "test_delete" near line 5
>
> According to the manual (I think) it should be possible:

I think it's just the brackets () - plpgsql's parser isn't terribly
sophisticated.

This works for me, but with brackets doesn't.

BEGIN;

CREATE TEMPORARY TABLE test1 (a integer, b text);
INSERT INTO test1 SELECT generate_series(1,100) AS a, 'text for b';

CREATE FUNCTION testdel() RETURNS integer AS $$
DECLARE
n integer;
r RECORD;
BEGIN
n := 0;
FOR r IN DELETE FROM test1 WHERE a % 10 = 1 RETURNING * LOOP
n := n + 1;
END LOOP;
RETURN n;
END;
$$ LANGUAGE plpgsql;

SELECT testdel();

ROLLBACK;

--
Richard Huxton
Archonet Ltd

---------------------------(end of broadcast)---------------------------
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Scott Marlowe 2007-09-04 14:11:18 Re: How to influence the planner
Previous Message Richard Broersma Jr 2007-09-04 11:08:47 Re: Cast on character columns in views