Documente Academic
Documente Profesional
Documente Cultură
http://en.juantxu.net/doku.php/sql/sqlplus
SQL*Plus
SQL*Plus. Generacin de informes Variables
Se puede establecer una variable de substitucin para almacenar valores temporales. En el caso de que no tenga un valor asignado se le pedir al usuario en tiempo de ejecucin. tiene este aspecto:
select FIRST_NAME ||', '|| LAST_NAME, SALARY from EMPLOYEES where DEPARTMENT_ID = &numero_de_departamento;
En el caso de que quieras reutilizar la variable debes establecerla con &&variable y reutilizarla con &variable
select FIRST_NAME ||', '|| LAST_NAME, &&columna from EMPLOYEES order by &columna;
Set Verify
Si no quieres que te salga el prompt de old y new devers establecer set verify a off
set verify off
Variables de uso
DEFINE variable = valor Establece una variable de tipo CHAR DEFINE muestra las variables que hay establecidas DEFINE variable muestra la variable, su valor y el tipo de datos que contiene. ACCEPT variable PROMPT 'pregunta al usuario para que establezca el valor'
1 de 5
SQL*Plus [Recordatorios]
http://en.juantxu.net/doku.php/sql/sqlplus
ACCEPT
FORMATO
ACCEPT variable [tipo de dato] [FORMAT formato] [PROMPT 'pregunta a formular']{HIDE}
ejemplo:
ACCEPT departamento PROMPT 'ponga un id de departamento :' select FIRST_NAME ||', '|| LAST_NAME from EMPLOYEES where DEPARTMENT_ID= &departamento;
DEFINE
ejemplo:
DEFINE departamento = 20 DEFINE departamento select FIRST_NAME ||', '|| LAST_NAME from EMPLOYEES where DEPARTMENT_ID= &departamento;
SET
Con set se pueden definir toda una serie de variables de entorno ARRAYSIZE{20|n} Define el tamao del Fetch de la BB.DD. COLSEP{_|text} Define el texto a imprimir entre columnas. Por defecto un espacio en blanco FEEDBACK{6|N|OFF|ON} Define el nmero de registros devueltos por una consulta HEADING{OFF|ON} Define si se pone o no la cabecera de las columnas LINESIZE{80|n} Define el nnero de carcteres por linea para informes. (El ancho de la pgina) LONG{80|n} Define el ancho mximo para visualizar valores LONG
2 de 5
SQL*Plus [Recordatorios]
http://en.juantxu.net/doku.php/sql/sqlplus
PAGESIZE{24|n} Define el tamao de la pgina. (A cada nueva pgina pone las caveceras) PAUSE{OFF|ON|text} Permite controlar el desplazamiento entre pantallas. Presionando intro se continua TERMOUT{OFF|ON} Determina si resutado se muestra en pantalla o no. En el fichero login.sql se encuentran todas las variables de entorno Para personalizar tu entorno modifica ese fichero
COLUMN
CLEAR Limpia cualquier formato FORMAT formato Define la visualizacion de una columna HEADING texto Define la cebecera de la columna JUSTIFY alineacin justifica LA CABECERA de la columna NOPRINT Oculta la columna PRINT muestra la columna TRUNCATE Trunca la cadena de caracteres al final de la primera linea WRAPPED Continua escribiendo en la linea siguiente
Formatos de columna
An Establece el ancho de columna en nmero de caracteres 9 Digitos con supresion de ceros 0 Digitos dejando los ceros $ Simbolo de dolar $ L Moneda local . Posicion del punto decimal , Separador de miles | Inserta un salto de linea ejemplo:
COLUMN FIRST_NAME HEADING 'Empleado | Nombre' FORMAT A8 COLUMN SALARY JUSTIFY LEFT FORMAT $99,999.00 COLUMN MANAGER_ID FORMAT 99999999 NULL 'No Format' select EMPLOYEE_ID, FIRST_NAME, SALARY, MANAGER_ID from EMPLOYEES;
resultado:
Empleado Nombre Empleado Nombre SALARY
MANAGER_ID
3 de 5
SQL*Plus [Recordatorios]
http://en.juantxu.net/doku.php/sql/sqlplus
-------- ----------- ---------Donald $2,600.00 124 Douglas $2,600.00 124 Jennifer $4,400.00 101 Michael $13,000.00 100 Pat $6,000.00 201 Susan $6,500.00 101 Hermann $10,000.00 101 Shelley $12,000.00 101 William $8,300.00 205
y por fin desde la linea de comandos de sql y contando que estemos en el directorio en el que creamos el archivo
SQL> @1.sql
y obtendremos:
introduzca el id del departamento :99 introduzca el nombre del departamento :nuevo old 2: VALUES ( &id, new 2: VALUES ( 99, 1 row created.
'&nombre' 'nuevo'
) )
SPOOL
4 de 5
SQL*Plus [Recordatorios]
http://en.juantxu.net/doku.php/sql/sqlplus
Oracle te deja redirigir la salida a un fichero de texto. esto se consigue mediante el comando spool .
SQL> spool /tmp/mi_fichero_de_texto.lst
NOTA Los datos no se materializarn en el fichero de texto hasta que no hagas spool off Si vas a escribir mucho tendrs que modificar el serveroutput y darle un tamao mayor
Ejemplo
Este sera un ejemplo de utilizacin donde se desea un listado en un fichero de texto:
set serveroutput on size 10000 spool /tmp/listado.lst prompt test spool off;
Y si ahora lees el contenido de /tmp/listado.lst vers que hay lo mismo que te ha salido por pantalla
Caracteres Especiales
Cuando intentas insertar una cadena con un caracter especial o reservado por Oracle como puede ser & o ? probablemente tendremos problemas si no escapamos el caracter. Con sqlplus se puede hacer:
SQL> set escape '\' SQL> insert into MI_TABLA(candena)
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported [http://creativecommons.org/licenses/by-nc-sa/3.0/]
5 de 5