PLPGSQL returning number of rows

From: Patrick B <patrickbakerbr(at)gmail(dot)com>
To: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: PLPGSQL returning number of rows
Date: 2016-11-11 00:44:09
Message-ID: CAJNY3it+bP1QEYhxPkhms6RTv4Na7ERPfQjJSimV8g4OrGQ5cQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi guys,

I'm writing a simple Plpgsql function to delete some data from different
tables.

The function starts with a select, and then 2 deletes after that.

How can I return the number of rows that each delete performed?

CREATE or REPLACE FUNCTION delete_ids_clientid(account_id integer)

RETURNS integer AS $$

declare

row record;

account_id integer;

BEGIN

FOR row IN EXECUTE '

SELECT

t1.id

FROM

public.table2 t2

JOIN

public.table1 t1 ON t2.id = t1.id

WHERE

t2.account_id = ' || account_id || ''

LOOP

DELETE FROM public.table1 WHERE id IN

(

SELECT

id

FROM

public.table1 t1

WHERE

t1.id = row.id

);

DELETE FROM public.table2 WHERE billable_id IN

(

SELECT

billable_id

FROM

public.table2 t1

WHERE

t1.id = row.id

);

END LOOP;

END

$$ language 'plpgsql';

Cheers

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David G. Johnston 2016-11-11 00:57:52 Re: PLPGSQL returning number of rows
Previous Message Tom Lane 2016-11-10 20:58:31 Re: Gin indexes on intarray is fast when value in array does not exists, and slow, when value exists