jueves, 29 de octubre de 2009

Windows 7 Network Driver for Vmware 6.5

El día de hoy instalé Windows 7 en una máquina virtual con Vmware 6.5, el problema fue que no reconocía el driver de la tarjeta de red de la máquina virtual. Sin embargo existe solución en caso de que el Vmware no tenga los drivers y esta es indicarle al Vmware que utilice cierto driver específico, para ello hay que ir al archivo .vmx de la máquina virtual (hay que apagar la virtual primero), abrirlo con el block de notas y añadir la siguiente línea:

ethernet0.virtualDev = "e1000"

Con ello reconocerá la tarjeta como 'Intel(R) PRO/1000 MT Network Connection' y ¡listo! ya podemos tener la red dentro de la vm.

Como comentario debo decir que la virtual ejecuta bastante bien, y eso que solamente le permití que tomara 512 MB de RAM. Tiene buena pinta el Windows 7, por lo menos es más ligero que sus predecesores. Seguiré probándolo.

(Update 23/Nov./2009) Es posible instalar Windows 7 indicando Windows Vista como sistema operativo base en VmWare, de esa manera no será necesario especificar drivers de red ni mover configuraciones manualmente.

viernes, 9 de octubre de 2009

Oracle UPSERT

En ocasiones resulta que necesitamos insertar un dato en la tabla si es que no existe ó actualizar (hacer un update) si es que sí existe. La primera solución que se viene a la mente tal vez sea la de:

select count(*) into CNT from where

if CNT = 0 then
insert into ...
else
update ....
end if;

Sin embargo existe otra manera más elegante de hacerlo que nos evita realizar el select-count inicial y se refiere a utilizar el valor de la pseudo-variable SQL%NOTFOUND que es un indicador que nos dice si la última instrucción de Update tuvo o no éxito (si encontró o no registros a modificar).

Utilizando esa propuesta, nuestro código quedaría de esta forma:

UPDATE set = where

if SQL%NOTFOUND then
insert into ...
end if;

Creo que de la forma anterior (sql%notfound) obtenemos un código más limpio y que en caso de tener un update exitoso nos ahorramos también tiempo de ejecución al no tener que hacer un conteo inicial.

Existe también otra posible solución que es la de utilizar la sentencia MERGE pero hablaremos de ella en otro post en un par de días.