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.

Deja un comentario