You are on page 1of 12

Manuel Vergaz Aguilera.

El editor SQL*Plus

SQL*Plus bsico ............................................................................................ 2


Primer contacto .......................................................................................... 2
Trabajar con usuarios .................................................................................. 3
Trabajar con datos ...................................................................................... 3
Operaciones con comandos .......................................................................... 4
Formato de columnas .................................................................................. 5
Formato de pgina ...................................................................................... 6
Uso de variables ......................................................................................... 7
Clculo de subtotales .................................................................................. 9
Ayuda de SQL*Plus ..................................................................................... 9
Los ficheros de configuracin ........................................................................ 9
SQL*Plus avanzado .......................................................................................11
Inicios de sesin ........................................................................................11
Anexos ........................................................................................................12
Formatos de columna en SQL*Plus...............................................................12
Documentacin..........................................................................................12
Manuel Vergaz Aguilera. El editor SQL*Plus

SQL*Plus es la herramienta cliente predeterminada del gestor Oracle desde su apa-


ricin en 1984. Aunque hay ido apareciendo otras ms accesibles desde el punto de
vista del desarrollador, SQL*Plus cuenta con algunas ventajas:
- En independiente de la plataforma,
- Es altamente configurable
- Cuenta con comandos propios.
Esta gua le muestra el manejo de sqlplus en la versin preinstalada con el gestor
Oracle 11g.

En esta gua hemos intentado poner siempre en mayscula el comando cuando


aparece por primera vez y en minscula cuando ya ha sido presentado. Sql*Plus no
es sensible a maysculas/minsculas.

SQL*Plus bsico
Primer contacto
Acceso como administrador
Esta gua asume que usted ha instalado el gestor y que, por lo tanto, conoce la
contrasea del administrador. Oracle reserva la cuenta sys al administrador con
todos los privilegios. As pues, asumiendo que la contrasea del administrador sea
sys tambin, use la siguiente serie de comandos para abrir sesin:
> sqlplus /nolog
SQL> CONN sys/sys@orcl AS sysdba

Verificar el usuario conectado


Cuando est conectado podr modificar tantas veces como quiera la conexin. es
posible que pierda la cuenta de qu usuario est utilizando. Para esos casos use:
SQL> SHOW user;

Desconectarse
Use el comando quit para cerrar una conexin:
SQL> QUIT;

La variable de entorno oracle_sid


Sql*plus no le pide ms que las credenciales de conexin porque el resto de la
informacin ya la tiene almacenada en su fichero tnsnames.ora del directorio
{ora_base}\product\11.1.0\winserver\NETWORK\ADMIN.
En dicho fichero debe venir configurados:
- La base de datos o el servicio asociado
- El equipo donde est instalado el gestor
- El puerto de conexin
Si no consiguiera conectarse deber a) pedir al administrador de la instancia que le
proporcione dichos datos y b) actualizar el fichero tnsnames.ora.

-2-
Manuel Vergaz Aguilera. El editor SQL*Plus

Trabajar con usuarios


No es recomendable trabajar con los privilegios del administrador ya que se pueden
cometer errores irreparables. En su lugar le recomendamos habilitar la cuenta hr o
scott y trabajar con sus datos en un entorno ms seguro.
Ambos usuarios tienen asociados sendos esquemas (conjuntos de objetos de la
base de datos como tablas y vistas) respectivamente. El esquema scott es el ms
antiguo y ha quedado obsoleto. Ha sido sustituido por el esquema hr que contiene
muchas ms tablas. Si se decide a habilitar hr para trabajar use la siguiente serie
de comandos como administrador:

Comprobar si la cuenta hr est bloqueada:


SQL> select username, account_status from dba_users
SQL> where username like 'HR';

Desbloquear
Si est bloqueada (expired & blocked) escriba estas sentencias una tras otra:
SQL> alter user hr account unlock identified by hr;
SQL> grant connect to hr;
SQL> grant resource to hr;

Probar la conexin
- Para probar la conexin use
SQL> conn hr/hr

Cada vez que utilice el comando conn en una conexin abierta, ser desconectado
de la anterior sesin y conectado a la nueva. SQL*Plus no mantiene conexiones en
paralelo.

Iniciar sesin como hr


Salga completamente de sqlplus y bralo de nuevo.
> sqlplus
La herramienta le pedir nombre de usuario (se lo mostrar) y contrasea (no se lo
mostrar)
Introduzca el nombre de usuario: hr
Introduzca la contrasea:
Conectado.
Recuerde: la contrasea del usuario hr es hr.

Trabajar con datos


Ahora ya como usuario hr podr trabajar con datos. En primer lugar lance el co-
mando que le muestre todas las tablas de su esquema:
SQL> select table_name from user_tables;
TABLE_NAME
------------
COUNTRIES
JOB_HISTORY
EMPLOYEES
JOBS
DEPARTMENTS
LOCATIONS
REGIONS

-3-
Manuel Vergaz Aguilera. El editor SQL*Plus

Seleccione la tabla employees para ver los campos de dicha tabla:


SQL> DESC employees
Nombre
--------------
EMPLOYEE_ID
FIRST_NAME
LAST_NAME
EMAIL
PHONE_NUMBER
HIRE_DATE
JOB_ID
SALARY
COMMISSION_PCT
MANAGER_ID
DEPARTMENT_ID
En su pantalla tendr, adems, dos columnas extra: Null? y Tipo. La primera espe-
cifica si el campo no acepta valores nulos (Not null) o si los acepta (Null). La se-
gunda especifica el tipo de datos.
Ahora ya puede lanzar una consulta sobre la tabla employees:
SQL> select last_name from employees where rownum < 10;
LAST_NAME
---------
Abel
Ande
Atkinson
Austin
Baer
Baida
Banda
Bates
Bell
Ahora tiene mucha informacin en la pantalla y quiere limpiarla. Use:
SQL> CLEAR SCREEN;
Supongamos que ahora quiere recuperar un comando que ha lanzado anteriormen-
te. Tiene dos opciones: a) retroceder en el histrico pulsando la tecla de direccin
arriba; b) listar todos los comandos:
SQL> LIST;
1* select last_name from employees where rownum < 10
Y elegir el comando a lanzar:
SQL> RUN 1;

Por simplificar, hemos recortado la salida del buffer de comandos.

Si utiliza el comando run sin pasarle ningn comando del bffer, lanzar el ltimo
comando vlido. Es la misma accin que si lanzase como comando la barra /:
Recuerde: run y / sirven para lo mismo.

Operaciones con comandos


Editar la sintaxis de un comando
Siempre que tenga un comando delante que no haya funcionado por razonnes sin-
tcticas podr editarlo. Para recupere el comando escribiendo ed:
SQL> ED

-4-
Manuel Vergaz Aguilera. El editor SQL*Plus

Se abrir un editor de texto con el ltimo comando lanzado. Edtelo normalmente,


guarde los cambios y cierre el editor. A continuacin lncelo escribiendo /:
SQL> /

El editor
Lance el siguiente comando para ver cul es el editor por defecto:
SQL> DEFINE_EDITOR;
DEFINE _EDITOR = "Notepad" (CHAR)
Si necesita modificarlo use el comando as:
SQL> define_editor='vi';

Almacenar comandos en un script


Puede ir almacenando los comandos que vaya lanzando en un fichero .sql para po-
der convertirlo luego en un script. Para ello use
SQL> SAVE miscript.sql APPEND
Naturalmente puede darle otro nombre. Todos los comandos del buffer se guarda-
rn al final del fichero respetando lo que hubiere. Si quiere reescribir el fichero use:
SQL> save miscript.sql REPLACE;
Perder todo lo que contuviera el fichero.
La ruta predeterminada para guardar ficheros es {oracle_base}\product\11.1.0
\db_1\bin. Si quiere establecer otra ruta inclyala en el nombre del fichero:
SQL> save "c:\mi primer script.sql" replace;

Lanzar los comandos de un script


Por el contrario, si ya tiene comandos almacenados en un script y desea lanzarlos
use start o @:
SQL> @ miscript.sql;

Guardar los datos


Para poder almacenar la informacin que devuelve una consulta se usa spool. Este
comando tiene una orden de inicio de la grabacin y otra para terminar. La siguien-
te secuencia de comandos abre una grabacin, guarda los datos del comando y
finaliza la grabacin:
SQL> SPOOL "nombres de empleados.txt"
SQL> select first_name from employees;
SQL> spool OFF

Formato de columnas
Cuando se traiga columnas de la base de datos sqlplus les dar un formato muy
bsico: alineamiento derecho para los nmeros y poco ms. Si quiere mejorar el
aspecto de sus columnas puede:
- Modificar la moneda de las columnas de monedas
- Modificar el encabezamiento
- Modificar la envoltura de texto (lneas de texto)
- Justificar el texto
- Formatear el texto

-5-
Manuel Vergaz Aguilera. El editor SQL*Plus

Moneda
Para dar un formato dlares a la columna salary de la tabla de empleados use:
SQL> COLUMN salary format $99999.99
SQL> select salary from employees where rownum < 10;
SALARY
----------
$2600.00
$2600.00
$4400.00
$13000.00
$6000.00
$6500.00
$10000.00
$12000.00
$8300.00
Resulta un poco difcil ponerles euros a la salida por sqlplus. Por esa razn remi-
timos a la faq correspondiente de Oracle:
http://www.oracle.com/technology/support/tech/sql_plus/htdocs/faq101.html#A49
12

Al final de esta gua podr encontrar el anexo Formatos de columna en SQL*plus.

Alineacin
Para alinear el texto a la derecha (right), a la izquierda (left) o centrado (center)
use:
SQL> column first_name justify right;

Renombrar el encabezado
La opcin heading del comando column le permite renombrar el encabezado de
columna:
SQL> column first_name heading Nombre;

Envoltura de texto
Con el concepto de envoltura de texto se entiende que si una fila no cabe en una
lnea, se contine en la siguiente en vez de truncarla:
SQL> column Texto format a13 word_wrapped;
SQL> select 'Esto es una fila muy larga, laaaaarga' Texto from dual;

Limpiar formatos
Puede limpiar los formatos aplicados con el siguiente comando:
SQL> clear COLUMNS
columns limpiado

Formato de pgina
Fijar el nmero de caracteres de lnea
De forma predeterminada sqlplus inicia la edicin de pginas con 80 caracteres
por lnea:
SQL> show linesize;
Puede modificar este valor con el comando set:

-6-
Manuel Vergaz Aguilera. El editor SQL*Plus

SQL> SET linesize 120;

Fijar el nmero de lneas por pgina


De forma predeterminada sqlplus inicia la edicin de pginas con 14 lneas por
pgina:
SQL> show pagesize;
Puede modificar este valor con el comandos set:
SQL> set pagesize 80;

Aadir un encabezado de pgina


Puede ilustrar o comentar el contenido de un informe o de una pantalla cualquiera
con texto en el encabezado de pgina:
SQL> TTITLE LEFT 'Fecha del informe: ' _DATE CENTER 'Informe de '
SQL.USER RIGHT 'Pgina: ' FORMAT 999 SQL.PNO SKIP 2
Y lanzar a continuacin cualquier comando para obtener:
Fecha del informe: 11/12/09 Informe de HR Pgina: 1
...
Como puede apreciar en el ejemplo hay algunas funciones propias del comando
TTItle:
- Left, Center y Right permite insertar texto alineado a la izquierda, centro o de-
recha respectivamente,
- Date es una funcin SQL*Plus que extraer la fecha del sistema cliente
- SQL.user y SQL.pno permiten obtener dinmicamente la cuenta del usuario co-
nectado y el nmero de pgina respectivamente,
- Skip permite saltar n lneas (en el ejemplo, dos) tras el encabezado.

Aadir un pie de pgina


El comando para aadir pie de pgina en BTitle en lugar de TTitle. Por lo dems, su
sintaxis es la misma:
BTITLE RIGHT 'Page: ' FORMAT 999 SQL.PNO

Uso de variables
Para poder trabajar con valores almacenados en memoria se usan variables.
Sqlplus trabaja tanto con variables temporales (se usan en una sentencia y luego
desaparecen) como con variables definidas (duran hasta que se eliminan expresa-
mente o s sale de sqlplus.

Variables temporales
Se insertan en el comando mediante un ampersand justo delante del nombre de la
variable y cuando el comando se ejecuta, sqlplus le pide el valor de a variable:
SQL> set verify off
SQL> select job_id from employees where last_name Like '&nombre';
Introduzca un valor para nombre: Russell
JOB_ID
----------
SA_MAN

-7-
Manuel Vergaz Aguilera. El editor SQL*Plus

Fjese cmo el tipo de datos a introducir en importante: si la variable es numrica


ir sin comillas pero si es de tipo texto (el campo last_name lo es) debe ir entre-
comillada simple.

Las variables temporales son tiles en los scripts porque piden al usuario del script
los valores a insertar en cada caso.

Modificar el ampersand
El ampersand (&) sirve para determinar que lo que viene detrs es una variable
temporal. Si desea utilizar otro smbolo que haga lo mismo use:
SQL> SET DEFINE '#';
SQL> show define;

Sustituir los nombres de columnas y tablas


Las variables pueden sustituir el nombre de una tabla o de una columna. Por ejem-
plo:
SQL> select last_name, &&columna
SQL> from employees
SQL> where &&columna = '&valor';
Se le pedir el nombre de la columna (inserte first_name, por ejemplo) y luego un
valor para dicha columna (inserte 'Susan').

El valor de columna quedar de forma permanente hasta que lo elimine o salga de


sqlplus.

Variables definidas
Puede crear variables de sesin y utilizar su valor en diferentes comandos:
SQL> DEFINE empleado = 10;
De esta manera cada vez que use la variable, sqlplus lo sustituir por 100:
SQL> select last_name from employees where employee_id = &empleado;
Si necesita conocer el valor de una variable concreta use:
SQL> DEFINE empleado;
Si necesita conocer el valor de todas las variables definidas use:
SQL> DEFINE;

El uso de los dobles ampersand (&&) es similar a DEFINE.

El comando accept
Gracias a accept es posible permitirle al usuario del script que establezca el valor de
la variable definida:
SQL> accept empleado number prompt 'Id de empleado= ';
Id de empleado=
Lo bueno de este mtodo es que es posible determinar el tipo de variable y la pre-
gunta que le va a saltar al usuario.

Undefine
Finalmente cunado ya no sean necesarias y para ahorrar espacio de memoria puede
eliminar las variables definidas con undefine:
SQL> undefine empleado;

-8-
Manuel Vergaz Aguilera. El editor SQL*Plus

Clculo de subtotales
Gracias a las funciones Break on y Compute se sqlplus es posible crear informes
con secciones de subtotales:
SQL> set pagesize 120;
SQL> BREAK ON department_id
SQL> COMPUTE SUM OF salary ON department_id
SQL> select department_id, salary from employees order by
department_id;
Cuya salida de datos, recortada, sera algo as:
DEPARTMENT_ID SALARY
------------- ----------
10 4400
************* ----------
sum 4400
20 13000
6000
************* ----------
sum 19000
30 11000
2500
3100
2900
2800
2600
************* ----------
sum 24900

Ayuda de SQL*Plus
Gracias al comando help podr recuperar la ayuda en forma de mens de coman-
dos:
SQL> HELP
Accesses this command line help system. Enter HELP INDEX or ? INDEX
for a list of topics. In iSQL*Plus, click the Help button to display
iSQL*Plus online help.
You can view SQL*Plus resources at
http://otn.oracle.com/tech/sql_plus/
and the Oracle Database Library at
http://otn.oracle.com/documentation/
Segn esto puede lanzar help index para visualizar un listado de los temas de la
ayuda:
SQL> help INDEX
Y luego seleccionar uno de la lista:
SQL> help copy

Los ficheros de configuracin


SQL*Plus no tiene, como tal, ficheros de configuracin sino unos scripts en los que
se puede establecer comandos que personalizan un poco la sesin que se abre
cuando se lanza el programa. Estos ficheros se llaman glogin.sql y login.sql.

glogin.sql
Este fichero es obligatorio y sqlplus lo lee siempre que se le invoca. Esta ubicado
normalmente en el directorio:

-9-
Manuel Vergaz Aguilera. El editor SQL*Plus

{ora_home}\sqlplus\admin
Por defecto el script viene vaco o con algunas lneas comentadas:
--
-- Copyright (c) 1988, 2005, Oracle. 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
--
Puede personalizar su sesin con comandos sqlplus:
set linesize 78
Entre las personalizaciones menos ortodoxas se encuentra las referidas al prompt o
aspecto de la lnea de comandos:
set sqlprompt 'Inserte un comando sql> '
O la personalizacin ms til:
set sqlprompt "_USER'@'_CONNECT_IDENTIFIER _PRIVILEGE> "

login.sql
Este fichero, opcional y presente desde Oracle 10, sirve para almacenar ms co-
mandos que se ejecutan en la sesin de sqlplus. La diferencia con el primero estriba
en que ste sirve para usuarios particulares de la mquina (no de Oracle) desde la
que se conectan a Oracle.
Este fichero suele estar en la misma ubicacin de la instancia de sqlplus del usua-
rio:
{oracle_home}\dbs
Las configuraciones de login.sql tienen prioridad sobre glogin.sql ya que se ejecutan
justo despus.

- 10 -
Manuel Vergaz Aguilera. El editor SQL*Plus

SQL*Plus avanzado
Esta segunda seccin de la gua pretende mostrar otras cuestiones ms especficas
de sqlplus que permitan un mayor aprovechamiento de la sesin con Oracle.

Inicios de sesin
De forma predeterminada el inicio de sesin sqlplus se produce mediante la se-
cuencia:
> sqlplus /nolog
SQL> conn hr/hr
Pero hay otras formas de levantar una sesin. La primera es invocar a sqlplus pa-
sndole las credenciales:
>sqlplus hr/hr
O bien
>sqlplus hr/hr@orcl
La diferencia estriba en si orcl es o no la conexin por defecto que hay en la varia-
ble de entorno de Windows oracle_sid:
> set oracle_sid

>sqlplus hr/hr@orcl @"e:\unscript.sql"

- 11 -
Manuel Vergaz Aguilera. El editor SQL*Plus

Anexos
Formatos de columna en SQL*Plus
Elemento Ejemplo Descripcin
9 9999 El nmero de nueves especifica el nmero de dgitos
recuperados. Si la cifra recuperada no es tan grande,
los 9 son sustituidos por espacios en blanco.
0 0999 Igual que en el caso anterior slo que aqu si la cifra
no es tan grande se colocan ceros en la posicin del
9990 cero.
$ $9999 El smbolo del dlar antecede el nmero.
MI 9999MI Mostrar el smbolo del - si el nmero es negativo.
S S9999 Mostrar el smbolo del + si el nmero es positivo o
cero, y el - si es negativo.
PR 9999PR Muestra los nmeros negativos entre ngulos.
D 99D99 Muestra el smbolo de los decimales en esa posicin.
G 9G999 Muestra el smbolo de los millares en esa posicin.
C C999 Muestra el smbolo ISO de la moneda.
L L999 Muestra el smbolo local de la moneda.
V 999V99 Multiplica el nmero por 10 tantas veces como apa-
rezca un nueve a la derecha de la V.
EEEE 9.999EEEE Muestra el nmero en expresin cientfica..
RN or rn RN Muestra el nmero en cifras romanas maysculas o
minsculas entre 1 y 3999.

Documentacin

- 12 -

You might also like