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.
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 |