Re: ReTORNAR UN CONJUNTO SIN RECORD Y SIN REFCURSOR

From: jeferson alvarez <jalvarez(at)renova(dot)com(dot)pe>
To: Milton Galo Patricio <minoztro(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ReTORNAR UN CONJUNTO SIN RECORD Y SIN REFCURSOR
Date: 2007-02-14 16:45:29
Message-ID: 45D33CA9.9070907@renova.com.pe
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Milton Galo Patricio escribió:
> 2007/2/14, jeferson alvarez <jalvarez(at)renova(dot)com(dot)pe>:
>> ESTUBE PROBANDO CON UN TYPE Y CON RECORD PERO PARA EL RECORD VA UN LOOP
>> ESLO QUE LE FALTA A ESTA FUNCION PERO A MI LO QUE ME INTERESA ES CON
>> TYPE O ALGUNA OTRA DONDE NO USE UN LOOP Y TIENE QUE SER CON PLPGSQL
>> PORQUE HAY MUCHAS MAS INTRUCCIONES QUE AGREGAR A ESTA FUNCION GRACIAS
>> POR LA AYUDA DE ANTEMANOD SI ALGUIEN NOS DIERA ALGUNAS LUCES
>
>
> y por qué no puedes utilizar refcursor?...para mi es mucho más limpio
> que un recordset, puedes ver aca ejemplos [0]...aca muestro uno de la
> misma documentación..
>
> CREATE TABLE test (col text);
> INSERT INTO test VALUES ('123');
>
> CREATE FUNCTION reffunc(refcursor) RETURNS refcursor AS '
> BEGIN
> OPEN $1 FOR SELECT col FROM test;
> RETURN $1;
> END;
> ' LANGUAGE plpgsql;
>
> BEGIN;
> SELECT reffunc('funccursor');
> FETCH ALL IN funccursor;
> COMMIT;
>
>
> [0] http://www.postgresql.org/docs/8.1/interactive/plpgsql-cursors.html
>
>
disculpen olvide adjuntar la info:

pregunta ¿que es mas rapido hacer un select y devolver ese conjunto en
un type o o hacer un cursor que recorrera toda los registros para
devolverlos uno a uno (corrijanme si me equivoco)
esta es la funcion que estoy probando

CREATE OR REPLACE FUNCTION alm_t_detalle_Eliminar1(ialdt_ch_id char(50))
RETURNS SETOF Type_alm_t_detalle_Eliminar_obtener AS
$BODY$
DECLARE
resultado record;
BEGIN
select td.arti_in_id,rtrim(a.arti_vc_descripcion) as
arti_vc_descripcion,
rtrim(c.conc_vc_desc) as
conc_vc_desc,td.aldt_do_cantidad,td.aldt_do_valor_unitario,

td.aldt_do_subtotal,td.aldt_ch_id,td.aldt_in_idcab,td.aldt_in_iddet,
td.aldt_ch_doc_corre
from alm_t_detalle td
inner join sgc_m_articulo a on
td.arti_in_id = a.arti_in_id
INNER JOIN sgc_m_conceptos C ON
c.conc_ch_codigo=a.arti_ch_und and c.conc_ch_tipo='UMD'
where aldt_ch_id=$1;

return;

END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

este el typo devuelto
CREATE TYPE type_alm_t_detalle_eliminar_obtener AS
(orden int4,
arti_in_id int4,
arti_vc_descripcion bpchar(350),
conc_vc_desc text,
aldt_do_cantidad numeric,
aldt_do_valor_unitario numeric,
aldt_do_subtotal numeric,
aldt_ch_id bpchar(50),
aldt_in_idcab int4,
aldt_in_iddet int4,
aldt_ch_doc_corre bpchar(15));

esta la prueba
SELECT * FROM
alm_t_detalle_Eliminar1('11192.168.1.178cahUESNotaIng09/02/2007
15:34:13 1')
AS (orden int4,arti_in_id int4,arti_vc_descripcion
char(350),conc_vc_desc text,
aldt_do_cantidad numeric,aldt_do_valor_unitario
numeric,aldt_do_subtotal numeric,
aldt_ch_id char(50),aldt_in_idcab int4,aldt_in_iddet
int4,aldt_ch_doc_corre char(15))

estas son las

CREATE TABLE alm_t_detalle
(
aldt_ch_id char(50) NOT NULL,
aldt_in_idcab int4 NOT NULL,
aldt_in_iddet int4 NOT NULL,
aldt_in_orden int4 NOT NULL,
aldt_ch_doc_corre char(15),
aldt_do_subtotal numeric(18,4),
aldt_do_valor_unitario numeric(18,4),
aldt_do_cantidad numeric(18,4),
arti_in_id int4
)
CREATE TABLE sgc_m_articulo
(
clas_in_id int4 NOT NULL,
arti_vc_descripcion char(250),
arti_in_id int4 NOT NULL,
arti_ch_und char(10),
arti_vc_cta_contable char(20),
arti_vc_descricion_larga char(350),
arti_peso_unitario numeric(18,4),
arti_vc_moneda char(3),
arti_ch_ctrl_stock char(1),
arti_in_tipo_venta int4,
arti_ch_oferta char(1),
arti_vc_und_peso char(3),
arti_vc_und_venta char(3),
arti_vc_und_compra char(3),
arti_vc_marca char(20),
arti_ch_estado char(3),
arti_ch_codigo char(15),
arti_ch_codigo_siscom varchar(20))
CREATE TABLE sgc_m_conceptos
(
conc_ch_tipo char(3),
conc_vc_desc char(50),
conc_ch_codigo char(3) NOT NULL,
CONSTRAINT sgc_m_conceptos_pkey PRIMARY KEY (conc_ch_codigo)
)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Edwin Quijada 2007-02-14 16:48:13 RE: Orientacion Sobre Comparativa entre postgres y mssql
Previous Message arturo garcia 2007-02-14 16:36:15 RE: Sobre 64 bits