lunes, 27 de octubre de 2008

Cursores en Oracle

¿Que es un cursor?
Un cursor es una herramienta de sql que permite recorrer los resultados de una consulta y realizar operaciones. Seria un equivalente a leer la consulta con un CRecordSet( o el tipo de dato que use el lenguaje para manejar base de datos), cargar los datos en un array/File, recorrerlo y en cada vuelta realizar la accion.

Además de la sentencia, en oracle se necesita crear un record en el cual devuleve los datos del registro en el que esta parado. Importante, los campos del record y los de la sentencia de SQL tienen que estar en el mismo orden.

Ejemplo General:

DECLARE CURSOR [nombrecursor]IS
SELECT [campo(s)] FROM [tabla(s)] WHERE [condicion(es)];

TYPE [nombreRecord] IS RECORD
([nombrecampo1] [tabla1].[campo1]%type,
[nombrecampo2] [tabla1].[campo2]%type,
//...
[nombrecampon] [tabla1].[campon]%type);

[variable] [nombrerecord];

BEGIN

OPEN [nombrecursor];

//..

LOOP

Fetch [nombrecursor] into ;
Exit when [nombrecursor]%NOTFOUND;

//Realizo la operación

//..

END LOOP;

END;

El siguiente es un ejemplo donde se recorre la tabla productos y se le asigna como código administrativo el nombre del producto.
El diseño de la tabla de productos es el siguiente:

Productos
CódigoProducto: number
Nombre: varchar2[128]
CódigoAdministrativo: varchar2[128]

DECLARE CURSOR cursorProductos IS
SELECT CódigoProducto, Nombre FROM Productos;

TYPE recordProductos IS RECORD
(
CódigoProducto Productos.CódigoProducto %type,
Nombre Productos.Nombre %type);

recProductos recordProductos;

BEGIN

OPEN cursorProductos ;

LOOP

Fetch cursorProductos into recProductos;
Exit when cursorProductos %NOTFOUND;

UPDATE Productos SET CódigoAdministrativo = recProductos.Nombre
WHERE Productos.CódigoProducto = recProductos.Nombre

END LOOP;

END;

Evidentemente, el ejemplo anterior se podria haber resuelto con la siguiente sentencia:
UPDATE Productos SET CódigoAdministrativo = Nombre
Pero el objetivo de este, como todo ejemplo, solo sirve para mostrar la aplicación de una herramienta. Como último detalle aclaro que la instrucción [variable] [tabla].[campo]%type, declara una variable con el nombre [variable] del mismo tipo que el dato de
[tabla].[campo].
Espero sepan disculpar la falta de tabulado, pero todavía no me acostumbro a html.

sábado, 25 de octubre de 2008

MathType 6

Esto no tiene nada que ver con programación, pero bueno siempre es útil tener instaladas este tipo de aplicaciones.

Free Image Hosting at www.ImageShack.us

Descripción del Programa MathType 6:
MathType es una potente herramienta interactiva que revoluciona la forma de crear documentos para imprimir y para Web de contenido matemático. Funciona con cualquier procesador de textos, programa de crear presentaciones, creador de HTML, presentación de diapositivas…

Dispone de alrededor de 500 símbolos matemáticos y plantillas (fracciones, raíces, sumas, integrales, matrices, productos, varios tipos de paréntesis y corchetes…) pudiéndose usar desde cualquier fuente instalada en el sistema.

Instala una barra de herramientas en el Word y el PowerPoint que permite que se pueda insertar en ellos notación matemática.

Los documentos se pueden guardar en formatos EPS, GIF, WMF o PICT.

Dejo para su deleite, el instalador, el Keygen y la documentación correspondiente.
Descargar

domingo, 12 de octubre de 2008

Y así empezamos

Se supone que iba a usar este blog para colgar fuentes y demás cosas, pero con el trabajo no tuve tiempo. Ahora, el señor www.blogger.com me obliga a crear una entrada para no tratarme de spammer.

En fin, en dos semanas empiezo.