Archivado el Noviembre, 2007



Javier Jofre

Enlaces para el curso de MS SQL Server 2005

Autor: Javier Jofre. Archivado en Formación, Microsoft
26/Nov/2007  

Tal vez uno de los enlaces que más me han gustado es el del curso de “Desarrolla con MSDN” sobre SQL Server 2005, aunque el de MOSS 2007 y el de VB .Net no están tampoco nada mal. Otros enlaces útiles son:

Chuletas sintácticas de SQL de Wikilearning

SQL Reference de Microsoft

Presentación SQL Server 2005 para desarrolladores (avanzado)

Diferencias entre Varchar y NVarchar

Optimización del rendimiento de SQL Server 2005 para programadores

Manual Transact-SQL en castellano

Javier Jofre

Necesitamos programadores

Autor: Javier Jofre. Archivado en Formación
21/Nov/2007  

Quiero incorporar a programadores (en algunos puestos no importa experiencia porque tenemos ya el plan de formación preparado para dar).

Se trata de desarrollar una serie de aplicaciones básicamente web. Si te interesa iniciarte en web, o ya sabes algo de HTML, CSS y JavaScript y te gustaría involucrarte en un proyecto para aprender o mejorar en algunas de las tecnologías como:

PHP, Zend, MySQL, ASP, SQL Server, Transact SQL, .Net Framework, C#, WCF, XAML, WPF, Oracle, Ajax, ASP.Net, Oracle Developer 10g, PLSQL, XSL, XML, JSP, Java, JDBC, Tomcat, JBoss, SAP R/3, ABAP4, BW, BSP, Sharepoint y Borland Delphi.

Para conocer más detalles, puedes ponerte en contacto conmigo a través de email: autor_del_post@dominio_del_blog

Javier Jofre

Paginación de filas en una consulta Oracle

Autor: Javier Jofre. Archivado en Lenguajes, Oracle
21/Nov/2007  

Revisando los foros internos de desarrollo de nuestra intranet de Innova, he visto un post de Rafa que creo interesante compartir con los que alguna vez os hayáis encontrado con el problema de sacar cierta cantidad de filas ordenada y limitada por dos umbrales, típico en aplicaciones web con paginación:

Básicamente lo encontré todo en la blogosfera, en concreto podéis visitar este enlace http://albertovilches.com/paginacion_i donde explican como tener una clase Page, aunque de ahí lo único que quería saber era cómo consultar una cierta cantidad de registros de una tabla (por ejemplo del 11 al 20) sin tener que consultar todos los datos, sin usar tablas temporales, etc. en Oracle, así que eso fue lo que realmente usé.¿Cuál fue el problema de la paginación en Oracle? en mySQL existe la cláusula LIMIT que nos permite hacer por ejemplo:
select * from pais limit 180,10
y nos mostrará 180 registros mostrados de 10 en 10, pero esto en Oracle no existe y lo único de lo que se dispone es de ROWNUM (número de filas) y por ejemplo, podemos hacer una select de los 30 primeros elementos (rownum<=30), pero a priori no podemos decirle que esté en un intervalo (rownum>10 and rownum<=20).
La solución, como podéis ver en el blog, consiste en hacer varios selects anidados cuyo funcionamiento es el siguiente:

select * from ( select a.*, rownum rnum from (
SELECT campo1, campo2 FROM tabla1 WHERE campo1 = valor ORDER BY campo2
) a where rownum <= lastElement ) where rnum >= firstElement;

- El select más interno recoge los datos de las tablas (siempre hay que mostrarlos ordenados!!), este sería nuestra select de toda la vida que necesitemos.
- El select que engloba al anterior selecciona los mismos valores pero además el número de fila (es decir, si teníamos las filas A B C / X Y Z / I J K ahora tendremos A B C 1 / X Y Z 2 / I J K 3) y ese valor de rownum se guarda en rnum y solo mostramos hasta el límite máximo (es decir, si queremos mostrar del 11 al 20 esta segunda select cogerá los 20 primeros resultados).
- Finalmente, la variable rnum nos permite hacer una tercera y última select en la que volvemos a coger los mismos datos (ahora ya el número de fila no lo queremos) con la condición de que rnum sea mayor o igual al primer elemento que queremos ver, por tanto, nos quitaremos esos primeros 10 registros que no los queríamos.

De esta manera tenemos una select a la que le podemos pasar el intervalo que queramos y nos mostrará solo esos registros (insisto en la importancia de devolver los registros ordenados, siempre).”