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

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: Use of delete...returning in function problem
Дата
Msg-id 46DD373E.1080308@archonet.com
обсуждение исходный текст
Ответ на Use of delete...returning in function problem  ("Bart Degryse" <Bart.Degryse@indicator.be>)
Ответы Re: Use of delete...returning in function problem  ("Bart Degryse" <Bart.Degryse@indicator.be>)
Re: Use of delete...returning in function problem  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
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;
RETURNn;
 
END;
$$ LANGUAGE plpgsql;

SELECT testdel();

ROLLBACK;

--   Richard Huxton  Archonet Ltd


В списке pgsql-sql по дате отправления:

Предыдущее
От: Aleksandr Vinokurov
Дата:
Сообщение: 8.0.1 to 8.0.13 upgrade added 15% lack of time of query execution
Следующее
От: Richard Broersma Jr
Дата:
Сообщение: Re: Cast on character columns in views