Dear all,

   I write a function to execute a sql string. E.g. "update tableA set
field1='abc' where name='123'; deletee from tableB where id=333;"
   The following is my function:
-----------------------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION no_err_rollback()
  RETURNS boolean AS
$BODY$
BEGIN
    ROLLBACK;
    RETURN TRUE;
EXCEPTION
     WHEN others THEN
            RETURN TRUE;
END
$BODY$
  LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION execsqls(sqls character varying)
  RETURNS boolean AS
$BODY$
DECLARE
           r BOOLEAN;
BEGIN
           EXECUTE sqls;
           -- TODO-1: I want to know how many records the input sqls
effects?
           RETURN TRUE;
EXCEPTION
           WHEN others THEN
                   SELECT no_err_rollback() INTO r;
                   -- TODO-2: I want to get the exception's code and detail
information. can I ?
                   RAISE EXCEPTION 'Error: %', 'abc';

END;
$BODY$
  LANGUAGE plpgsql;
-----------------------------------------------------------------------------------------------------------------------------

My Questions are:
 1. when I execute a sql, can I get the total records user updated or
deleted ?
 2. if I cache the exceptions, can I get the detail information?

-- 
Regards,
*Muiz*

Reply via email to