Mostrando entradas con la etiqueta db2. Mostrar todas las entradas
Mostrando entradas con la etiqueta db2. Mostrar todas las entradas

viernes, 6 de junio de 2014

Consulta con condicional en db2 / sql



Tengo que realizar una consulta en db2 (igual esto funciona en otros motores, hay que ver bien la sintaxis)  que muestre una información si se cumple determinada condición y otra si no se cumple, algo del estilo mostrar el valor A si C>D o B si C<=D.

La sintaxis en DB2 es la siguiente

Select
  CASE
        WHEN (C>D)
  THEN
        A
  ELSE
        B
  END
               as "texto….",
from TABLA 


jueves, 5 de junio de 2014

Consulta en DB2 filtrando por fecha en formato YYYYMMDD.



Estuve bastante rato buscando  cómo hacer para en DB2 hacer una consulta de los registros de la base que cumplieran con ser los del día, siendo que estos están guardados en formato YYYYMMDD.

Lo pude solucionar de la siguiente forma.


select * from TABLA
                where (CAMPO in (
                                               select concat(concat('20',substr(CHAR(current date),7,2)),concat(substr(CHAR(current date),1,2),substr(CHAR(current date),4,2))) from mmdb.locale FETCH FIRST 1 ROWS ONLY
                                                    )
                              );



Obviamente se pude agregar el where que se necesite y los join también que necesiten.

Si tienen alguna forma más fácil de hacerlo será bienvenida.

martes, 17 de diciembre de 2013

Browser de BD por JDBC

He tenido que trabajar con una base de datos DB2 que corría en un AS400 y no quería entrar a la pantalla verde para realizar las consultas, entonces busque un poco aluna aplicación Windows, que
Se conecte a las bases de datos por jdbc, y me encontré con Sql Workbench, una herramienta gratis, muy ligera que se puede crear conexiones indicándole jdbc a utilizar (el tienen muchos incluidos pero se le puede agregar alguno más que necesitemos) los datos de la base de datos clásicos, usuario, contraseña, etc., y luego puedes  hacer las consultas sql y nos devuelve los datos.

Una contra que tienen es que no tienen una lista de las tablas que tenemos en la conexión que estemos y no tienen el tan "lindo" autocompletar, pero tiene cosas interesantes. Una que mysql ha perdido es el que automáticamente se guarden las consultas, las pestañas que utilizaste, etc., y además es muy muy rápido, yo lo he probado con mysql y db2, pero tienen por defecto diría yo para todas las bases que conozco y más.
Además cuenta con una herramienta muy interesante que se llama Pumper, que te copia datos de una tabla a otra (ya sea que este en la misma base o no, solo hay que definir las 2 conexiones), se puede hacer filtros y la copia es muy rápida.
Tiene cosas que he visto en algunos browser de BD como el crear con un click el insert de los datos de una tabla (esto lo he utilizado mucho), el exportar los datos a formatos como Excel, o copiar al portapapeles los datos de la consulta sql que realizamos. Algo interesante que lo aprendí de la peor manera es que los inserte y delete los realiza en memoria y hasta que no le des commit no impacta las consultas, esto es bueno y malo, hay que saber que existe y saber usarlo. Otra cosa a tener en cuenta es que al realizar una consulta de actualización (insert o update por ejemplo) el navegador bloquea la tabla que estés usando (esto en DB2 que fue donde lo probé) entonces tu aplicación AS400 puede quedare bloqueada mientras no realices el commit o rollback.

A probarlo y comentarme que les parece.

sábado, 28 de julio de 2012

Largo de nombres de tablas en DB2 con Genexus 9.0

Empce un proyecto nuevo y el cliente exigio que se utilizase DB2. Este proyecto lo desarrollaremos con Genexus 9.0, y es una migracion de un proyecto que tenemos con MySql. Al intentar crear la base de datos desde Genexus me daba problema con tablas e indices que el largo del nombre era mayor a 18 caracteres.
Investigando y obteniendo ayuda de artech, encontramos que este problema se da con Genexus 9 ya que DB2 anterior a la versión 10, no soportaba mas de 18 caracteres, entonces genexus por mas que se configuraba en las propiedades del modelo que el largo de las tablas era 30 igual daba error y no dejaba impactar la base, segun algunos sac para la version Evo1 U3 de genexus esto se soluciona.
Pero existe un workaround, en el archivo config.gx que si no existe se debe de crear en la raiz del modelo, copiar lo siguiente:


rgz0001=w
rgz0002=w
rgz0014=w 

Luego de esto se sigue trabajando igual, no cambia nada en la operativa diaria.