Yo en postgresql no soy un gran conocedor, y a la semana realizo varios store procedures aunque estos no son nada del otro mundo, ni complicados para nada. Pero una cosa que no sabia , y tampoco me habia tomado el tiempo para investigar (un gran error), fue ver como se podian recibir y utilizar los arreglos en un sp en postgres, que realmente no es complicado y pueden llegar a ser muy utiles, también aqui aparte de ver como se usan , también haré un ejemplo de como usarlos y preparar el arreglo desde PHP que también puede llegarles a ser muy util.

La sintaxis del recorrer un arreglo en postgres no es muy buena , pero es útil y simple de utilizar y consiste en lo siguiente.

FOR ITERATOR IN array_lower(VARIABLE,DIMENSIONES) .. array_upper(VARIABLES, DIMENSIONES) LOOP
AQUI SE COLOCA LO QUE UNO DESEE HACER DENTRO DEL CICLO.
END LOOP;

Entonces tomemos un ejemplo sencillo vamos a hacer este Store procedure que consistira basicamente en hacer insert de un campo de texto en una tabla especfica, este es un ejemplo sencillo , pero ya con el se podran dar una idea de como utilizarlo, asi que aqui va.

CREATE OR REPLACE FUNCTION prueba.sp_insertar_campo(_idejemplo integer, _texto text[])
RETURNS integer AS
$BODY$
BEGIN
FOR i IN array_lower(_texto,1) .. array_upper(_texto,1) LOOP
INSERT INTO prueba.tablaxxx(idejemplo, texto) VALUES(_idejemplo, _texto[i]);
END LOOP;
return 1;
EXCEPTION
end;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION prueba.sp_insertar_campo(_idejemplo integer, _texto text[]) OWNER TO healthcare;

Como pudieron ver este es un sp muy sencillo en el cual solo hago insercion de 2 campos y es sencillo pero sirve para mostrar como podemos recorrer un arreglo, en este caso donde decia lower y recibia los 2 parametros , el primero pues es el arreglo en si, y el otro pusimos “1″ porque este arreglo era solo de una dimension.

Ahora veremos como lo podemos llamar desde un archio de php.

Esta parte tambien es sencilla, solo debemos de tener cuidado que como es texto todos los elementos del arreglo deben de ir entre ‘ ‘ para identificar que es texto si no nos dara error.

$arreglo1 = array("elemento1", "elemento2", "elemento3","elemento4"); // nosotros tenemos este arrelgo en php y queremos mandarselo al sp que acabamos de crear.

// Si solo tuvieramos el arreglo asi, primero le tendriamos que hacer un chapuz a nuestro arreglo para que si lo reconociera postgres que son ponerle comillas.
for ($i=0; $
$arreglo1[$i] = ” ‘ “. $arreglo1[$i] . ” ‘ “;
// y de esta manera ya lo tenemos con comillas simple, ahora solo lo pasamos a texto y listo.
$fin = implode(”,”,$arreglo1);

$sql = “SELECT prueba.sp_insertar_campo(1, array[$fin]) as resultado”;
y alli estaria todo, la funcion implode nos serializa un arreglo por el primer argumento que nosotros le pongamos.

Espero que les sirva de algo eso, y seguiremos posteando, porque esto esta verde todavia. orale.

Una Respuesta a “Uso de Arreglos en Store Procedures PostgreSQL”

  1. Luis Cevallos

    Hola como estas es muy interesante tu forma de hacerlo.
    Espero me puedas ayudar mi problema radica en la creacion de los arreglos a traves de un procedure y luego enviar una vez creado el arreglo a php y que php lo muestre espero haberme hecho entender bueno te agrezco por el aporte creo que es muy bueno.
    Esperando una pronta respuesta de tu parte me despido agradeciendo la ayuda provista.
    Que tengas un buen dia.

    Luis Cevallos C.

    Marzo 18th, 2008 | 2:02 pm

Deja un comentario

Cerrar
Enviar por Correo