jueves, 10 de septiembre de 2009

lesson learned...

Cosas del día a día

Por diferentes motivos día a día van surgiendo pequeñas "cosas" u obstáculos que solucionar, la idea de este blog es ir documentandolos para ser una fuente de consulta confiable.

Dicho esté preambulo, ahí va el primero de lo que espero que sea una larga serie :)

Consultar una base de datos Oracle con perl sin usar el módulo DBI

Bueno, si bien perl nos probee el modulo DBI para servir de API contra diferentes tipos de bases de datos (Oracle, MySQL, etc), hace poco me encontré con el problema que algunos de los comandos nativos de PL/SQL (Oracle) no los tomaba la API por lo cual no podía utilizarla.
Puntualmente necesitaba conectarme a la base, activar la función timing (para saber cuanto tiempo necesito la consulta), obtener el resultado y luego desactivar la función timing y cerrar la conexión.
La función timing se habilita con la sentencia:

set timing on

La cual me producía un error utilizando DBI, por lo que luego de navegar un poco encontré la siguiente forma de hacerlo:


#!/usr/bin/perl -w



open ORA, "| $ORACLE_HOME/bin/sqlplus /\@" or die "Can't pipe to sqlplus: $!";

print ORA "set timing on\n";

print ORA ";\n";

print ORA "set timing off\n";

print ORA "exit\n";

close ORA;



Con este pequeño script pude obtener la salida necesaria para saber cual era el tiempo que tardaba en ejecutarse mi query :D

No hay comentarios:

Publicar un comentario