FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
UNION ALL cambia tipo de dato de retorno
buen dia. Tengo la siguiente estructura de tabla en postgres 8.2:
Código:
CREATE TABLE tiposcliente ( idtipoclient smallint NOT NULL, tipoclient character varying(30) NOT NULL, CONSTRAINT pk_tiposcliente PRIMARY KEY (idtipoclient) ) Código:
select cast(0 as smallint) as idtipoclient, cast('Todos' as varchar(30)) as tipoclient UNION ALL (SELECT idtipoclient, tipoclient FROM tiposcliente order by 2) Devolviendome el campo como 'memo' tengo problemas para mostrarlo en el componente de datos de delphi. ¿Alguna respuesta para resolver el correcto retorno del tipo de dato? Acabo de probar creando una vista con la misma definicion anterior: Código:
CREATE VIEW TipoCliente as select cast(0 as smallint) as idtipoclient, cast('Todos' as varchar(30)) as tipoclient UNION ALL (SELECT idtipoclient, tipoclient FROM tiposcliente order by 2) lo unico que encontre de documentacion al respecto es http://www.postgresql.org/docs/8.3/s...nion-case.html pero sigo sin poder resolverlo. Mil gracias a todos.. FlacoNet Última edición por FlacoNet fecha: 14-02-2010 a las 00:34:24. Razón: Por que creando una vista devuelve el tipo de dato correcto |
#2
|
||||
|
||||
yo tomé el codigo de tu post sin cambiarle nada y ami no me genera el error que comentas...
aún así podrias recalcar el tipo de dato a la salida...
por lo de la vista... mejor... para eso son las vistas... nos evitamos consultas tan largas dentro del programa.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#3
|
|||
|
|||
Gracias Movorack por tu respuesta.
No es un error en realidad lo que sucede. solo que devuelve un tipo de dato que no es el del campo original ni el que le pido al escribir ::varchar(30) en el select. Utilizando el Pgadmin al correr la siguiente consulta: Código:
SELECT idtipoclient, tipoclient FROM tiposcliente El mismo tipo de dato me devuelve cuando uso la vista, es decir OK, pero cuando ejecuto la consulta con union: Código:
select cast(0 as smallint) as idtipoclient, cast('Todos' as varchar(30)) as tipoclient UNION ALL SELECT idtipoclient::SMALLINT, tipoclient::VARCHAR(30) FROM tiposcliente order by idtipoclient; smallint y varchar. Y no especifica que sea varchar(30), por lo tanto se trata de un campo MEMO. Espero se entienda y muchas gracias por tu tiempo Esteban |
#4
|
||||
|
||||
yo tambien usé el pgadmin para las pruebas e hice los mismos pasos que vos. y al ejecutar el SQL del UNION me devolvió VARCHAR(30)...
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#5
|
|||
|
|||
Resuelto
Que raro. Viendo los resultados que vos tuviste no me quedó otra opcion que instalar la version nueva de postgres para windows, de la 8.2 que tenia a la 8.4.2-1. Haciendo esto ya me devuelve correctamente el tipo de dato solicitado en el select
Saludos y muchas gracias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
tipo de dato | arnedokpo | Conexión con bases de datos | 1 | 14-07-2008 16:37:06 |
Tipo de Dato | BetoAlonso | Varios | 11 | 09-12-2007 00:30:01 |
se cambia el tipo de letra | Patricio | Impresión | 8 | 02-11-2007 15:49:16 |
No cambia el tipo de papel | ElDioni | Impresión | 0 | 28-11-2005 17:45:16 |
Unión con diferentes tipos de dato | Kafu | Firebird e Interbase | 2 | 09-02-2004 13:20:45 |
|