¿Sabías qué? Truco para editar consultas en SQL*Plus

Como buen DBA chapado a la antigua que soy, uso SQL*Plus. Nada de herramientas externas como SQL Developer, Toad o cualquier otra herramienta gráfica.

¿Las he usado? – Sí.
¿Me han sacado alguna vez de un apuro? – También.

Pero no son mis herramientas de trabajo habituales.

Creo que este truco que descubrí hace algún tiempo, te puede ayudar a ganar tiempo en SQL*Plus y a mirar esa pantallita negra con otros ojos. Quizá hasta te parezca un poco más atractivo. 😋

A mi me fastidiaba mucho, escribir una consulta, y a mitad de camino equivocarme.

Ya entra en juego la configuración de tu cliente SSH y la de la shell que estás usando. Unas no te dejan borrar, otras te muestran símbolos extraños al pulsar la tecla retroceso, etc.

Total, que al final, siempre me tocaba reescribir la consulta completa, o ir copiando y pegando fragmentos del código para intentar sacar la consulta adelante sin perder demasiado tiempo.

Te voy a enseñar dos soluciones a tus problemas.

1. Editando la consulta

Estas dentro de SQL*Plus conectado a tu base de datos. Lanzas la consulta y resulta que te has equivocado escribiendo.

17:56:46 SQL> select syssdare from dual;
select syssdare from dual
       *
ERROR en linea 1:
ORA-00904: "SYSSDARE": identificador no valido

Normalmente, tendrías que reescribir de nuevo y corregir tu error. O como yo hacía, tenerlo todo en un editor de texto, y ahí corriges, y de nuevo copias y pegas en SQL*Plus para ejecutar.

La solución es usar el comando «edit» o «ed».

Esto cargará un editor «VI» en tu consola, y podrás moverte como si estuvieras editando un fichero. (Por ejemplo, pulsar ‘i’ para entrar en el modo edición, ‘x’ para borrar caracteres, etc.)
Cuando entras en el editor, verás abajo, y también cuando guardas la modificación, que estás editando un fichero afiedt.buf.
Cuando hayas terminado de editar, guarda los cambios pulsando la tecla dos puntos (‘:’) y escribiendo (‘w’) para guardar, (‘wq’) para guardar y salir, o añadiendo el símbolo (‘!’) para forzar la decisión. Si no quieres guardar los cambios, escribe (‘:q’) para salir sin guardar.
Por último, verás que ya está tu consulta bien escrita y solo tienes que ejecutar el comando r para repetir la última consulta que has enviado a SQL*Plus.

17:56:58 SQL> ed
select sysdate from dual
/
:wq!
Escrito file afiedt.buf

  1* select sysdate from dual
18:00:26 SQL> r
  1* select sysdate from dual

SYSDATE
-------------------
28/10/2024 18:00:29

2. Reemplazando en la consulta

Si por el contrario, tienes una consulta super larga, con muchas líneas, y te das cuenta, que te has equivocado en una palabra, te ha faltado una coma, o simplemente, has escrito una columna que no era de esa vista, en lugar de editar todo el código, también puedes reemplazar caracteres de forma fácil y muy rápida.

Usa el comando c, y este tiene dos variantes. Se puede usar con punto (‘.’) y con barra (‘/’)
La sintaxis sería la siguiente:

c .palabra_que_buscas.palabra_a_reemplazar.
c /palabra_que_buscas/palabra_a_reemplazar/

Aquí un pequeño ejemplo del uso de punto.

18:14:55 SQL> select username fro dba_users;
select username fro dba_users
         *
ERROR en linea 1:
ORA-00923: palabra clave FROM no encontrada donde se esperaba


Transcurrido: 00:00:00.00
18:15:25 SQL> c .fro.from.
  1* select username from dba_users
18:15:38 SQL> r
  1  select username from dba_users
USERNAME
---------------
CELE

Y otro ejemplo, del uso de la barra.

18:21:36 SQL> select * from dba_users
...
...
...

18:21:46 SQL> c /*/username,account_status/
  1* select username,account_status from dba_users
18:22:02 SQL> r
  1* select username,account_status from dba_users

USERNAME             ACCOUNT_STATUS
-----------------    ---------------
CELE                 OPEN

BONUS: Cambio de editor

Si no te llevas bien con VI y estás acostumbrado a usar otro editor, puedes definirlo dentro de SQL*Plus.

18:24:06 SQL> define_editor=vi

En caso de que quieras cambiar las opciones por defecto y que este cambio de editor sea permanente, puedes hacerlo modificando el fichero glogin.sql y añadiendo la linea que anteriormente pusimos en SQL*Plus.

servidor1:/export/home/oracle $ cat $ORACLE_HOME/sqlplus/admin/glogin.sql
--
-- Copyright (c) 1988, 2011, Oracle and/or its affiliates. 
-- All rights reserved. 
--
-- NAME
--   glogin.sql
--
-- DESCRIPTION
--   SQL*Plus global login "site profile" file
--
--   Add any SQL*Plus commands here that are to be executed when a
--   user starts SQL*Plus, or uses the SQL*Plus CONNECT command.
--
-- USAGE
--   This script is automatically run
--
define_editor='vi'

Espero que te sirva en tu día a día, y que puedas ahora usar SQL*Plus de manera más fácil y rápida. 😉

Error ORA-27102: out of memory
Error «clientSupportedOSCheck» al instalar Oracle en Red Hat 8

Deja un comentario