Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

plgsql + arrays

Estas en el tema de plgsql + arrays en el foro de PostgreSQL en Foros del Web. Hola a todos... alguien sabe si en plgsql puedo recibir un array.. porque no encuentro info sobre eso..... lo que quiero hacer es lo siguiente ...
  #1 (permalink)  
Antiguo 23/03/2007, 14:37
 
Fecha de Ingreso: enero-2003
Ubicación: Caracas
Mensajes: 439
Antigüedad: 21 años, 3 meses
Puntos: 0
De acuerdo plgsql + arrays

Hola a todos... alguien sabe si en plgsql puedo recibir un array.. porque no encuentro info sobre eso..... lo que quiero hacer es lo siguiente :

create or replace function prueba(array) returns integer as'.......

y poder manipular la informacion que contiene el array,,,si alguien sabe alguna info o un ejemplito ... se los agradeceria...


De antemano gracias por la info que me puedan dar
  #2 (permalink)  
Antiguo 23/03/2007, 16:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: plgsql + arrays

No se si sea lo que buscas pero aqui te envio lo que acabo de hacer:

esta es una funcion pl_pgsql, obviamente todo el codigo

CREATE OR REPLACE FUNCTION suma(sumandos anyarray)
RETURNS int8 AS
$BODY$DECLARE
suma integer;
end_idx integer;
cur_idx integer;

BEGIN
cur_idx:= array_lower( sumandos, 1 );
end_idx:= array_upper( sumandos, 1 );
suma:=0;
WHILE cur_idx<=end_idx LOOP
suma:=suma+sumandos[cur_idx];
cur_idx:=cur_idx+1;
END LOOP;
RETURN suma;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION suma(sumandos anyarray) OWNER TO postgres;

y para llamarla debe ser de la siguiente manera:

select suma(ARRAY[1,2,3,15,21,8]);

Espero te sea de ayuda.. Chao
  #3 (permalink)  
Antiguo 23/03/2007, 18:39
 
Fecha de Ingreso: enero-2003
Ubicación: Caracas
Mensajes: 439
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: plgsql + arrays

CREATE OR REPLACE FUNCTION acceso.permisos_colectivos(date, date, date, Array)
RETURNS void AS'
DECLARE
registro ALIAS FOR $1;
finicio ALIAS FOR $2;
ffin ALIAS FOR $3;
direcciones ALIAS FOR $4;
BEGIN

INSERT INTO acceso.permisos
SELECT a.cedula,registro,finicio,ffin,
b.entrada AS hinicio,b.salida AS hfin,(''1''::char) AS remunerado,(''1''::char) AS estatus,9 AS motivo,
(''VACACIONES COLECTIVA POR FESTIVIDADES NAVIDEÑAS''::text)AS observacion
FROM acceso.empleado a
INNER JOIN acceso.horario b ON(a.id_horario=b.id_horario)
WHERE a.cod_ubic IN (ARRAY);
RETURN;
END;'
LANGUAGE 'plpgsql';

este es el codigo de la funcion que quiero realizar donde array es un array que viene de PHP. para resolver esto tendria que realizar un ciclo como el que me muestras o como seria. graciasss
  #4 (permalink)  
Antiguo 24/03/2007, 08:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
De acuerdo Re: plgsql + arrays

Bueno: Fabian y por que no recorres el array y vas haciendo el insert por cada posición del array, no es muy óptimo, pero es una solución.

Inténtelo y verá que le servirá.

En el ejemplo que te envie antes esta como recorrer el array, solo aplicalo a la consulta y listo.

Hasta luego.
  #5 (permalink)  
Antiguo 24/03/2007, 13:29
 
Fecha de Ingreso: enero-2003
Ubicación: Caracas
Mensajes: 439
Antigüedad: 21 años, 3 meses
Puntos: 0
Re: plgsql + arrays

lo hice como tu me dices pero desde PHP. lo que queria es eso optimizar el codigo,gracias.
  #6 (permalink)  
Antiguo 24/03/2007, 19:08
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: plgsql + arrays

de qué tipo es el dato que quieres manipular como un array?
__________________
Gracias de todas todas
-----
Linux!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:06.