Great! That is what I need! Thank you Pavel.
Best Regards, On Sun, Jul 4, 2010 at 12:20 PM, Pavel Stehule <pavel.steh...@gmail.com>wrote: > 2010/7/4 Andre Lopes <lopes80an...@gmail.com>: > > Hi, > > > > Thanks for your reply. > > > > Yes, in the Postgre command line I see the exception, the problem is that > > I'am using this function in a PHP code. I need send the value "1" to the > OUT > > parameter if the function is successful or send the value "0" to the OUT > > parameter if the function not runs successful. > > > > How can I do this? > > CREATE OR REPLACE FUNCTION foo(...) > RETURNS int AS $$ > BEGIN > INSERT INTO ... > RETURN 1 > EXCEPTION WHEN OTHERS THEN > RETURN 0 > END > $$ LANGUAGE plpgsql; > > But I am sure so you can see exception from php too. > > Regards > Pavel > > > > > Best Regards, > > > > > > On Sun, Jul 4, 2010 at 11:05 AM, Pavel Stehule <pavel.steh...@gmail.com> > > wrote: > >> > >> Hello > >> > >> every unsuccessful SQL command raises exception in PL/pgSQL. So if > >> your function is finished without exception, then INSERT is ok. > >> > >> Regards > >> > >> Pavel Stehule > >> > >> 2010/7/4 Andre Lopes <lopes80an...@gmail.com>: > >> > Hi, > >> > > >> > I have a function, at the end I need to know if the INSERTS have run > >> > successfully or not. > >> > > >> > Here is the function: > >> > > >> > [code] > >> > CREATE OR REPLACE FUNCTION "apr_insert_utilizador_ap" > >> > (IN ppgroup_id int4, > >> > IN ppip_address char, > >> > IN ppusername varchar, > >> > IN pppassword varchar, > >> > IN ppemail varchar, > >> > IN ppactive int4, > >> > IN ppnome_real varchar, > >> > IN pptelefone_pessoal varchar, > >> > IN ppid_anunciante varchar, > >> > OUT ppreturn_value int4 > >> > ) > >> > RETURNS int4 AS > >> > $BODY$ > >> > > >> > DECLARE > >> > pGROUP_ID alias for $1; > >> > pIP_ADDRESS alias for $2; > >> > pUSERNAME alias for $3; > >> > pPASSWORD alias for $4; > >> > pEMAIL alias for $5; > >> > pACTIVE alias for $6; > >> > pNOME_REAL alias for $7; > >> > pTELEFONE_PESSOAL alias for $8; > >> > pID_ANUNCIANTE alias for $9; > >> > vID_UTILIZADOR_MAX int4; > >> > vID_UTILIZADOR_NOVO int4; > >> > vRETURN int4; > >> > > >> > BEGIN > >> > > >> > SELECT INTO vID_UTILIZADOR_MAX max(id) AS max_id FROM > >> > aau_utilizadores; > >> > vID_UTILIZADOR_NOVO := vID_UTILIZADOR_MAX + 1; > >> > > >> > INSERT INTO aau_utilizadores > >> > (id, group_id, ip_address, username, password, salt, email, > >> > activation_code, > >> > forgotten_password_code, remember_code, created_on, last_login, > >> > active) > >> > VALUES (vID_UTILIZADOR_NOVO, pGROUP_ID, pIP_ADDRESS, pUSERNAME, > >> > pPASSWORD, null, > >> > pEMAIL, null, null, null, NOW(), null, pACTIVE); > >> > > >> > INSERT INTO aau_metadata > >> > (id, user_id, nome_real, telefone_pessoal) > >> > VALUES (vID_UTILIZADOR_NOVO, vID_UTILIZADOR_NOVO, pNOME_REAL, > >> > pTELEFONE_PESSOAL); > >> > > >> > INSERT INTO aau_anunciantes > >> > (user_id, id_anunciante) > >> > VALUES (vID_UTILIZADOR_NOVO, pID_ANUNCIANTE); > >> > > >> > vRETURN := 1; > >> > ppreturn_value := vRETURN; > >> > > >> > END; > >> > $BODY$ > >> > LANGUAGE PLpgSQL > >> > RETURNS NULL ON NULL INPUT > >> > VOLATILE > >> > EXTERNAL SECURITY INVOKER; > >> > [/code] > >> > > >> > If the INSERTS are all done the function RETURNS "1", but how can I > >> > RETURN > >> > "0" if any error occurred? > >> > > >> > > >> > Best Regards, > >> > André. > >> > > > > > >