PLPGSQL: How can I get the effected rows when use "execute" command in function

Started by Muizover 14 years ago3 messagesgeneral
Jump to latest
#1Muiz
work.muiz@gmail.com

Dear all,

Can I get the effected rows after executing sqls in function?
e.g.:

CREATE OR REPLACE FUNCTION execsqls(sqls character varying)
RETURNS integer AS
$BODY$
DECLARE
BEGIN
EXECUTE sqls;
-- TODO-1: I want to know how many records the input sqls
effects?
RETURN effectedRows;
END;
$BODY$
LANGUAGE plpgsql;

test: select execsqls('update mytable where name like ''%abc''')

--
Regards,
*Muiz*

#2Pavel Stehule
pavel.stehule@gmail.com
In reply to: Muiz (#1)
Re: PLPGSQL: How can I get the effected rows when use "execute" command in function

Hello

yes, you can. Look on GET DIAGNOSTICS statement

http://www.postgresql.org/docs/9.1/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-DIAGNOSTICS

Regards

Pavel Stehule

2011/11/29 Muiz <work.muiz@gmail.com>:

Show quoted text

Dear all,

   Can I get the effected rows after executing sqls in function?
e.g.:

CREATE OR REPLACE FUNCTION execsqls(sqls character varying)
  RETURNS integer AS
$BODY$
DECLARE
BEGIN
           EXECUTE sqls;
           -- TODO-1: I want to know how many records the input sqls
effects?
           RETURN effectedRows;
END;
$BODY$
  LANGUAGE plpgsql;

test: select  execsqls('update mytable where name like ''%abc''')

--
Regards,
Muiz

#3Ernesto Quiñones
ernestoq@gmail.com
In reply to: Muiz (#1)
Re: PLPGSQL: How can I get the effected rows when use "execute" command in function

if you are doing insert, update or delete you can use "retuirng" command in the query, work with a cursor to get the rows

----- Mensaje original -----

Show quoted text

Dear all,

      Can I get the effected rows after executing sqls in function?
e.g.:

CREATE OR REPLACE FUNCTION execsqls(sqls character varying)
    RETURNS integer AS
$BODY$
DECLARE
BEGIN
                      EXECUTE sqls;
                      -- TODO-1: I want to know how many records the input sqls
effects?
                      RETURN effectedRows;
END;
$BODY$
    LANGUAGE plpgsql;

test: select  execsqls('update mytable where name like ''%abc''')

--
Regards,
*Muiz*