RE: [pgsql-es-ayuda] ayuda con función

From: Edwin Quijada <listas_quijada(at)hotmail(dot)com>
To: <mavir78(at)gmail(dot)com>, <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: [pgsql-es-ayuda] ayuda con función
Date: 2011-08-15 22:52:33
Message-ID: BAY155-W3648AC64983C39FE09FE79E3260@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


No debiste usar SELECT , aunque podias usando la clausula INTO. DEbiste hacerlo de esta forma
x:=(acos(sin(radians(LATITUD_1)) * sin(radians(LATITUD_2)) +
cos(radians(LATITUD_1)) * cos(radians(LATITUD_2)) *
cos(radians(LONGITUD_1) - radians(LONGITUD_2))) * 6378) ;
RETURN x;
De la forma en que lo hicste hubiese funcionado si hubieras usado una funcion SQL y no plsql
*-------------------------------------------------------*
*-Edwin Quijada
*-Developer DataBase
*-JQ Microsistemas

*-Soporte PostgreSQL

*-www.jqmicrosistemas.com
*-809-849-8087
*-------------------------------------------------------*

Date: Fri, 12 Aug 2011 11:58:36 -0430
Subject: [pgsql-es-ayuda] ayuda con función
From: mavir78(at)gmail(dot)com
To: pgsql-es-ayuda(at)postgresql(dot)org

Buen día Lista!!!
Agregué una función en mi base de datos para calcular la distancia entre dos puntos, se ejecuta bien para efectos de agregarse como función, pero al momento de utilizarla me da un error, me pueden ayudar a saber por qué? qué es lo que estoy haciendo mal???

Esta es la función:

-- Function: calculo_distancia(numeric, numeric, numeric, numeric)

-- DROP FUNCTION calculo_distancia(numeric, numeric, numeric, numeric);

CREATE OR REPLACE FUNCTION calculo_distancia(numeric, numeric, numeric, numeric)

RETURNS integer AS
$BODY$
DECLARE LATITUD_1 ALIAS FOR $1;
LONGITUD_1 ALIAS FOR $2;
LATITUD_2 ALIAS FOR $3;
LONGITUD_2 ALIAS FOR $4;


BEGIN
SELECT (acos(sin(radians(LATITUD_1)) * sin(radians(LATITUD_2)) +

cos(radians(LATITUD_1)) * cos(radians(LATITUD_2)) *
cos(radians(LONGITUD_1) - radians(LONGITUD_2))) * 6378) as resultado;
RETURN resultado;

END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE

COST 100;
ALTER FUNCTION calculo_distancia(numeric, numeric, numeric, numeric) OWNER TO local;

Esta la ejecución:

select calculo_distancia(10.4997432, -66.8745939, 10.4830856, -66.8614196)

Este el error que me lanza la ejecución:

ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function "calculo_distancia" line 8 at SQL statement

********** Error **********

ERROR: query has no destination for result data
SQL state: 42601
Hint: If you want to discard the results of a SELECT, use PERFORM instead.
Context: PL/pgSQL function "calculo_distancia" line 8 at SQL statement

Gracias por su ayuda!!

-------------------------------------------
Virginia B.
-------------------------------------------

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodolfo Paparás 2011-08-16 01:48:28 Re: Duda acerca Tsearch con acentos
Previous Message Roberto M. Ruiz S. 2011-08-15 20:11:00 Re: Duda acerca Tsearch con acentos