Re: Ayuda con Funcion y C++

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Daniel <daniel(dot)delaluz(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con Funcion y C++
Date: 2006-11-17 19:41:41
Message-ID: 20061117194141.GQ32174@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Daniel escribió:
> CREATE OR REPLACE FUNCTION inserta_valor(int4, int4, int4, int4)
> RETURNS void AS
> $BODY$
> BEGIN
> select * from valores where canal = $1;
> if not found then
> if $4 ISNULL then
> insert into valores values($1,$2,$3);
> else
> insert into valores values($1,$2,$3,$4);
> end if;
> end if;
> END;$BODY$
> LANGUAGE 'plpgsql' VOLATILE;
> ALTER FUNCTION inserta_valor_dig(int4, int4, int4, int4) OWNER TO postgres;
> GRANT EXECUTE ON FUNCTION inserta_valor(int4, int4, int4, int4) TO public;
> GRANT EXECUTE ON FUNCTION inserta_valor(int4, int4, int4, int4) TO postgres;
>
> y desde C++ llamo la funcion asi.
> ......
> connection Con("dbname=scada ");
> result R( T.exec("PERFORM inserta_valor(1,47,0,0,0)") );

Bueno, el SELECT que tenias que cambiar por PERFORM no era el que
invocaba a inserta_valor(), sino el que examina la tabla valores. Es
decir la segunda linea de la funcion:

perform * from valores where canal = $1;

PERFORM es una sentencia del lenguaje PL/pgSQL, no SQL. Es bueno
entender la diferencia.

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe de Jesús Molina Bravo 2006-11-17 19:43:33 Re: SI en postgreSQL ... NO en PHP
Previous Message Victor Lopez 2006-11-17 19:34:36 SI en postgreSQL ... NO en PHP