Ver Mensaje Individual
  #7 (permalink)  
Antiguo 09/09/2008, 10:26
davydky
 
Fecha de Ingreso: agosto-2008
Mensajes: 28
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Procedimientos..

Mi procedimiento:

Código:
CREATE OR REPLACE FUNCTION consulta_ubicacion(IN "varchar", OUT out_x float8, OUT out_y float8, OUT out_time "timestamp", OUT out_ruta "varchar", OUT out_chofer "varchar", OUT out_contacto "varchar", OUT out_principal "varchar", OUT out_secundaria "varchar", OUT out_parroquia "varchar") AS
$BODY$
DECLARE

reg_unidad	RECORD;
reg_principal	RECORD;
reg_secundaria	RECORD;

BEGIN
	SELECT  re.codigo_uni,
		re.the_geom,
		x(transform(the_geom,4236)), 
		y(transform(the_geom,4236)), 
		time, 
		r.descripcion, 
		c.apellido || ' ' || c.nombre AS nombre, 
		c.telefono
	
	INTO 	reg_unidad
	FROM 	recorrido re,
		unidades u,
		chofer c,
		rutas r
	WHERE	re.estado = 'V'
	AND 	re.codigo_uni = $1
	AND 	re.codigo_uni = u.codigo_uni 
	AND	u.codigo_chofer = c.codigo_chofer  
	AND	u.codigo_ruta = r.codigo_ruta
	ORDER BY codigo_uni;


	SELECT DISTANCE(the_geom, reg_unidad.the_geom), 
		nombre_ape, 
		parroquia
	INTO	reg_principal
	FROM 	vias
	WHERE	nombre_ape IS NOT NULL
	ORDER BY distance LIMIT 5;


	SELECT 	DISTANCE(the_geom, reg_unidad.the_geom), 
		nombre_ape
	INTO 	reg_secundaria
	FROM 	vias
	WHERE 	nombre_ape IS NOT NULL
	AND reg_principal.nombre_ape <> nombre_ape
	ORDER BY distance LIMIT 7;

	out_x 		= reg_unidad.x;
	out_y 		= reg_unidad.y;
	out_time 	= reg_unidad.time;
	out_ruta 	= reg_unidad.descripcion;
	out_chofer 	= reg_unidad.nombre;
	out_contacto 	= reg_unidad.telefono;
	out_principal 	= reg_principal.nombre_ape;
	out_secundaria 	= reg_secundaria.nombre_ape;
	out_parroquia 	= reg_principal.parroquia;


END;
$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION consulta_ubicacion(IN "varchar", OUT out_x float8, OUT out_y float8, OUT out_time "timestamp", OUT out_ruta "varchar", OUT out_chofer "varchar", OUT out_contacto "varchar", OUT out_principal "varchar", OUT out_secundaria "varchar", OUT out_parroquia "varchar") OWNER TO postgres;

Desde php:

Código PHP:

<?php
$unidad
=$_GET[getunidad];    

$conn pg_pconnect("dbname=publicaciones user=postgres password=postgres");
if (!
$conn
{
  echo 
"ERROR: No se pudo conectar co.\n";
  exit;
}

$sql="
    SELECT    (consulta_ubicacion('$unidad')).out_x, 
        (consulta_ubicacion('$unidad')).out_y, 
        (consulta_ubicacion('$unidad')).out_time, 
        (consulta_ubicacion('$unidad')).out_ruta, 
        (consulta_ubicacion('$unidad')).out_chofer, 
        (consulta_ubicacion('$unidad')).out_contacto, 
        (consulta_ubicacion('$unidad')).out_principal, 
        (consulta_ubicacion('$unidad')).out_secundaria, 
        (consulta_ubicacion('$unidad')).out_parroquia
      "
;
$resultado=pg_query($conn,$sql);
$final=pg_fetch_array($resultado,0);

$respuesta_x=$final['out_x'];
$respuesta_y=$final['out_y'];
$respuesta_time=$final['out_time'];
$respuesta_ruta=$final['out_ruta'];
$respuesta_chofer=$final['out_chofer'];
$respuesta_contacto=$final['out_contacto'];
$respuesta_principal=$final['out_principal'];
$respuesta_secundaria=$final['out_secundaria'];
$respuesta_parroquia=$final['out_parroquia'];


 

$prueba "{
        \"datos\":
            [{
                \"junidad\":\"$unidad\" , 
                \"jx\":\"$respuesta_x\" , 
                \"jy\":\"$respuesta_y\" , 
                \"jtime\":\"$respuesta_time\" , 
                \"jruta\":\"$respuesta_ruta\" , 
                \"jchofer\":\"$respuesta_chofer\" , 
                \"jcontacto\":\"$respuesta_contacto\" , 
                \"jprincipal\":\"$respuesta_principal\" , 
                \"jsecundaria\":\"$respuesta_secundaria\" , 
                \"jparroquia\":\"$respuesta_parroquia\" 

            }]
      }"
;

echo 
$prueba;

?>
Saludos...