callSQLPlus.sh

Nombre: callSQLPlus.sh
Autor: Juan José Cerezo Mata (Tigreci)
Origen: Original
Lenguaje: bash
Licencia: GPL V.3 (script GPL V.3) pero seria mas bien un contrib pues usa un comando que proviene de Oracle

Propósito: Lanza una sentencia sql pasada por parametro al sqlplus y retorna los resultados sin crear un archivo intermedio de spool, con tan solo las columnas, el cual puede ser tratado a traves de otro script o bien ser escrito en un archivo
Dependencias: Depende de sqlplus (oracle)

Código:

#!/usr/bin/ksh
###############################
# callSQLPlus: script para lanzar sentencias SQL a un servidor oracle.
#
#      Author:   Juan José Cerezo Mata (Tigreci)
#      Version: 0.1
#      Date: 17/10/2007
#
###############################
LOG=${HOME}/scripts/log/callSQLPlus.log; #Archivo de log si se desea
CONSULTA="$@" #con dicha variable especial obtenemos toda la lista de argumentos como un solo elemento
echo `date` "Consulta: $CONSULTA" >> $LOG;
SQL_ADMIN="usuario/usuario@servidor"

SALIDA_SQL_PLUS=`sqlplus -S /nolog <<EOF
  connect $SQL_ADMIN
  set head off
  set feedback off
  set echo off
  set term off
  spool off
  $CONSULTA
  exit
  EOF`
  echo $SALIDA_SQL_PLUS

Ejemplos de uso:

./callSQLPlus.ksh select * from tusuarios

esto saca en pantalla el resultado de la sentencia select

Comentarios:
Pensé en sacar las variables a archivo porque adolece de un gran fallo, y es que la cadena de conexión no puede pasarse por parametro ya que cada espacio en blanco lo interpreta como un argumento con lo que no soy capaz de obtener la sentencia sql en un solo argumento, aunque si se podria crear un archivo de configuración de la que leer la cadena de conexión