Re: Problema con Tipos Compuestos

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

In response to

Browse pgsql-es-ayuda by date

  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