From: | "Fernando Aguada" <fernandoaguada(at)yahoo(dot)com(dot)ar> |
---|---|
To: | <pgsql-es-ayuda(at)postgresql(dot)org>, "Jaime Casanova" <systemguards(at)yahoo(dot)com> |
Subject: | Re: Problema con Tipos Compuestos |
Date: | 2005-01-28 15:45:54 |
Message-ID: | 001901c50550$75f68560$fb00a8c0@fernandoa |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola,
En realidad cuando defini el tipo compuesto, defini el campo cletra como
varchar (1), (los defini exactamente iguales en las tablas como en el tipo),
pero resulta que una vez grabado el tipo , lo muestra
como aparece abajo !!!, lo que es muy raro.
Por otra parte, la tabla es grande, respecto a los campos char y los
varchar
en realidad utilizo varchar como un estandar, pero es posible que tengas
razon
en cuanto al tema de la optimizacion.
----- Original Message -----
From: "Jaime Casanova" <systemguards(at)yahoo(dot)com>
To: "Fernando Aguada" <fernandoaguada(at)yahoo(dot)com(dot)ar>;
<pgsql-es-ayuda(at)postgresql(dot)org>; "Alvaro Herrera" <alvherre(at)dcc(dot)uchile(dot)cl>
Sent: Friday, January 28, 2005 12:29 PM
Subject: Re: [pgsql-es-ayuda] Problema con Tipos Compuestos
> --- Fernando Aguada <fernandoaguada(at)yahoo(dot)com(dot)ar>
> escribió:
> >
> > CREATE TYPE planicaj AS
> > (cori int2,
> > ctipo int2,
> > cabre varchar,
> > cletra varchar,
> ¨¨¨¨¨¨¨¨¨¨¨¨¨¨
> > csucur int2,
> > cnumcomp int4,
> > cimpu int2,
> > cimpefv numeric,
> > cimpcht numeric,
> > cimptic numeric,
> > cimptar numeric,
> > cimpotr numeric,
> > cimpret numeric,
> > cconce varchar);
> > ALTER TYPE planicaj OWNER TO postgres;
> >
> >
> > La Funcion en cuestion
> >
> > declare rplacaj planicaj%ROWTYPE;
> > declare rparaco paracomp%ROWTYPE;
> >
> > begin
> > select * into rparaco from paracomp;
> >
> > for rplacaj in select 1 as
> > cori,ctipo,tipocomp.cabre,cletra,csucur,cnumcomp,
> >
> >
> totalven.cimpu,cimpefv,cimpcht,cimptic,cimptar,cimpotr,cimpret,cconce
> > from totalven
> > left join tipocomp on
> > totalven.ctipo=tipocomp.cnume
> > where ccaja=pfecha and cmodo=2 and
> > cneto<>0 and
> > (totalven.cctacte=1 OR
> > totalven.cctacte=2 AND
> > totalven.ctipo=rparaco.ctrecve)
> > loop
> > rplacaj.cletra:=cast(rplacaj.cletra varchar 3);
> > return next rplacaj;
>
> lo que estas devolviendo es cletra de rplacaj, que es
> del tipo 'planicaj' que tu definistes arriba y ese
> campo letra es varchar no varchar(1) asi que esta bien
> que te devuelva mas de un caracter.
>
> >
> > end loop;
> > return;
> > end
> >
>
> Ahora me meto ha hacer observaciones que nadie me
> pidio:
> 1) no es tu tabla demasiado grande? aunque eso puede
> afectar al rendimiento mas me preocupa por que puede
> ser (algunas veces) señal de un mal diseño.
> 2) si cletra va a tener necesariamente un solo
> caracter por que no declararlo char(1) en la tabla y
> en el tipo de dato? (de hecho deberian ser iguales en
> ambos me parece).
> Pregunta para Alvaro, se gana algo cambiando de
> varchar(1) a char(1)? Mi suposicion es que si, estoy
> en lo correcto o me estoy confundiendo de motor de
> base de datos?
>
> atentamente,
> Jaime Casanova
>
> _________________________________________________________
> Do You Yahoo!?
> Información de Estados Unidos y América Latina, en Yahoo! Noticias.
> Visítanos en http://noticias.espanol.yahoo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Cristian Quintana | 2005-01-28 15:49:53 | ejemplos de BD |
Previous Message | Victor Hugo Roumieu | 2005-01-28 15:42:45 | problema para restaurar la base desde un resguardo |