miércoles, 13 de marzo de 2013

ORACLE-SQLPLUS-editar sentencias en sqlplus. DEFINE _EDITOR

Este es un tip bastante fácil y útil.

Cuando se escribe  una sentencia en sqlplus y se necesita corregir o modificar, se debe volver a escribir la sentencia completa.
sqlplus cuenta con un editor interno, el cual es posible de configurar defininiendo la variable EDITOR.

Por default sqlplus no cuenta con ningún editor en particular:


SQL> define
DEFINE _DATE       = "13-MAR-13" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "clarope" (CHAR)
DEFINE _USER       = "TAMP" (CHAR)
DEFINE _PRIVILEGE      = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1002000500" (CHAR)
DEFINE _EDITOR       = "ed" (CHAR)
DEFINE _O_VERSION      = "Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR)
DEFINE _O_RELEASE      = "1002000500" (CHAR)



Sin embargo es posible configurar que el editor sea vi (o algun otro que se encuentre instalado en el server).

[oracle@YAYO ~]$ export EDITOR=vi

de esta forma es posible verificar que sqlplus reconoce a vi como editor.

SQL> define
DEFINE _DATE       = "13-MAR-13" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "clarope" (CHAR)
DEFINE _USER       = "TAMP" (CHAR)
DEFINE _PRIVILEGE      = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1002000500" (CHAR)
DEFINE _EDITOR       = "vi" (CHAR)
DEFINE _O_VERSION      = "Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options" (CHAR)
DEFINE _O_RELEASE      = "1002000500" (CHAR)

Ahora como ejemplo de uso escribimos la siguiente sentencia:
SQL> select sysdate from dual;

SYSDATE
---------
13-MAR-13

SQL>

Modificamos la sentencia utilizando el comando ed:

SQL> ed          

Al abrir el editor vi modificamos la sentencia y al guardar los cambios se despliega el texto que ha quedado guardado en memoria:

Wrote file afiedt.buf

  1* select to_char(sysdate,'dd/mm/yyyy hh24:mi:ss') lala from dual

Para ejecutar lo recién modificado se utiliza el caracter "/"

SQL> /

LALA
-------------------
13/03/2013 12:05:12

SQL>


Ahora ya es posible utilizar el utilitario vi para reescribir sentencias dentro de sqlplus. 

Para no tener que exportar la variable en cada sesion, se añade al archivo .bash_profile de la siguiente forma:
ORACLE_SID=lala
...
EDITOR=vi



No hay comentarios:

Publicar un comentario