En esta oportunidad veremos como desde ejecutar una sola función, se puede obtener 2 set de datos para ser procesados por su software.
Ejemplo 1: Usando Tablas Temporales
create or replace function lee1() returns integer
AS $$
BEGIN
DROP TABLE IF EXISTS tmp1;
DROP TABLE IF EXISTS tmp2;
CREATE TEMP TABLE tmp1 AS SELECT par_serial FROM docs_paragraph;
CREATE TEMP TABLE tmp2 AS SELECT par_integrity FROM docs_paragraph;
RETURN 1;
END;
$$ LANGUAGE plpgsql;
Ejemplo 2: Devolviendo una Cadena de Texto para ser Parseada
create or replace function lee2() returns TEXT
AS $$
DECLARE
retorno TEXT;
fila RECORD;
BEGIN
retorno := '[';
FOR fila IN SELECT par_serial FROM docs_paragraph limit 10
LOOP
retorno := retorno || fila.par_serial::text || ',';
END LOOP;
retorno := substring(retorno,1,length(retorno)-1);
retorno := retorno || '],[';
FOR fila IN SELECT par_integrity FROM docs_paragraph limit 10
LOOP
retorno := retorno || '"' || fila.par_integrity || '", ';
END LOOP;
retorno := substring(retorno,1,length(retorno)-1);
retorno := retorno || ']';
RETURN retorno;
END;
$$ LANGUAGE plpgsql;
Ejemplo 3: Devolviendo una trama JSON
create or replace function lee3() returns JSON
AS $$
DECLARE
retorno JSON;
cadena TEXT;
fila RECORD;
BEGIN
cadena:= '{"resultado":[';
cadena:= cadena || '{"t1":[';
FOR fila IN SELECT par_integrity, par_serial FROM docs_paragraph limit 10
LOOP
cadena := cadena || '{"integrity":"' || fila.par_integrity || '", "serial":' || fila.par_serial::text ||'},';
END LOOP;
cadena := substring(cadena,1,length(cadena)-1);
cadena := cadena || ']}'; --cierro tabla t1
cadena := cadena || ',{"t2":[';
FOR fila IN SELECT par_integrity, par_serial FROM docs_paragraph order by par_serial desc limit 10
LOOP
cadena := cadena || '{"integrity":"' || fila.par_integrity || '", "serial":' || fila.par_serial::text ||'},';
END LOOP;
cadena := substring(cadena,1,length(cadena)-1);
cadena := cadena || ']}'; -- cierro tabla t2
cadena := cadena || ']}'; --cierro resultado
--raise notice '%', cadena;
retorno := cadena::json;
RETURN retorno;
END;
$$ LANGUAGE plpgsql;
Impactos: 390
Comments are closed