miércoles, 20 de mayo de 2009

Regular Expressions para resolver consultas en Oracle

Y sí. Las expresiones regulares, aunque no son cosa nueva, siguen ganando espacios por su gran versatilidad.
¿No nos alcanza con un where ... like ...?
Pues bien, acabo de descubrir (pólvora), que Oracle incluye desde hace poco un where especial para el uso de expresiones regulares.

Les paso el link oficial, parece interesante.

Después me cuentan.

Nos escribimos,
Daniel

viernes, 20 de febrero de 2009

Cómo obtener los nombres de columna de una tabla en Oracle

Si les pasa lo que me está pasando a mí ahora, que tengo que acceder a una tabla ORACLE a través de un componente que no devuelve los nombres de los campos y no tengo el usuario de conexión ni nada por el estilo, o si por alguna razón necesitan el origen de la tabla, pueden tirar una consulta como la siguiente:

select column_name "Campo", data_type "Tipo de dato",
data_length "Tamaño", nullable "Permite nulos"
from all_tab_columns
where table_name = '[NOMBRE_DE_LA_TABLA]'


donde [NOMBRE_DE_LA_TABLA] se reemplaza por, (je), el nombre de la tabla en mayúsculas y sin los corchetes.

No estoy diciendo nada nuevo, pero lo uso de ayuda memoria, previo googleo.

lunes, 8 de diciembre de 2008

Max y Min en XPath

Antes de que me olvide: como XPath no soporta funciones que devuelvan máximos y mínimos de manera natural, lo que debemos hacer es filtrar los nodos eliminando aquellos que tienen un nodo mayor, antes (preceding-sibling) o después (following-sibling). De esa forma podemos obtener el nodo deseado.

Ejemplo:

Con un XML que contenga...

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="max.xsl"?>
<root>
<nodo id="1">12</nodo>
<nodo id="2">17</nodo>
<nodo id="3">58</nodo>
<nodo id="4">33</nodo>
</root>

y un XSL que diga...

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="root">
root contiene <xsl:value-of select="count(node())"/> nodos.<br/>
El mayor valor es <xsl:value-of
select="nodo[not(preceding-sibling::nodo &gt; .)
and not(following-sibling::nodo &gt; .)]"/><br/>
El menor valor es <xsl:value-of
select="nodo[not(preceding-sibling::nodo &lt; .)
and not(following-sibling::nodo &lt; .)]"/><br/>
</xsl:template>
</xsl:stylesheet>

... dará como resultado...

Root contiene 4 nodos.
El mayor valor es 58
El menor valor es 12

viernes, 12 de septiembre de 2008

Del pasado (1)

Uy... Milan (Viajero) me hizo acordar de algunas cosas.
También yo, en mi pasado (hace algo más de 16 años) utilicé una vieja VAX. En realidad utilicé 2: una en un cliente para el que trabajé muchos años y otra en Ort Argentina, donde en esa época era auxiliar docente.
Las terminales que usábamos generalmente eran VT-100 y VT-220, pero había (una en cada uno de estos dos lugares) un modelo que para mí era impresionante. Era un híbrido de impresora de matriz de punto y terminal: tenía teclado y llevaba una resma de papel contínuo, y por eso mismo se utilizaba casi expresamente para generar listados impresos. Así que uno podía sentarse ante ella y hacer lo mismo que estoy haciendo ahora (interactuar con un equipo a través del teclado), aunque haciendo el output sobre papel. No era lo más común, claro, pero en aquellas madrugadas, cuando el cansancio era grande y la cantidad de programas a compilar muchos, venía muy bien contar con esa terminal.
De las terminales recuerdo que eran equipos muy sólidos, robustos, con teclados de gran calidad que contaban con un montón de funciones en el teclado numérico (que no era igual al que usamos en la PC) y una gran cantidad de teclas de función. Las terminales más bonitas que utilicé fueron las VT-220. Recuerdo que se las podía configurar, a pesar de ser sòlo terminales de texto, para usar un scroll muy suave, algo que yo usaba bastante seguido para seguir código.
Al lado de los recursos actuales, a veces todo aquello parece ridículo.

acertijo macabro y webístico

La piel se hace con un muerto muy sangriento.

De estreno

Desde hace bastante tiempo tenía ganas de arrancar con algo como esto. Pero como suele pasar, quería evitar que a la larga, por la causa que fuere, la cosa se vaya diluyendo. Tampoco quería agregar en Ser Axxonita cosas que no tengan que ver demasiado con aquellas otras cosas que me interesan.
Así que acá andamos, estrenando otro blog.
Espero no aburrirlos.