jueves, 27 de febrero de 2014

Variables SQLPLUS

  Estaba yo intentando hacer un script de espacio de tablespaces e intenté poner lo que todos vosostros pondríais en la cabecera , el nombre de la base de datos , el dia . Despues de varios intentos con declares y bloques pl/sql , descubri una cosita que me ha parecido interesante , existe una forma de crear variables dentro de sqlplus , la cuestion es crear una columna utilizando el formato new_value del tipo

column <nombre_campo> new_value <nombre_variable> 
en mi caso 

column v_fecha new_value var_fecha 

entonces puedes hacer sql del tipo :

select to_char(sysdate,'DD-MM-YYYY HH24-MI') v_fecha from dual;

y luego utilizar este campo como si fuera una variable de sql , osease &v_fecha 

en mi caso lo utilizo en un report html ( sql plus puede hacer reports html ) de la siguente manera:

column v_fecha new_value var_fecha
column instance_name new_value var_db
column version new_value var_version

select to_char(sysdate,'DD-MM-YYYY HH24-MI') v_fecha from dual;
select instance_name ,version from v$instance;

para visualizarlas utilizo el prompt 

prompt <center>Database &var_db<center>
       <div class="subtitle1">Oracle Version &var_version</div>
       <div class="subtitle2">&var_fecha</div></CENTER>

es recomendable cuando hagais pruebas con las variables tener los settings de "set echo on" y "set termout on", dado que si os equivocais en el nombre o no le dais valor a las variables sqlplus os lo pedirá , si no teneis estos dos settings lo unico que hará sqlplus es esperarse sin sacar nada por pantalla, no os tengo que explicar lo estresante que es contenplar una pantalla en negro sin saber que se está ejecutando .

Enrique Ortiz
Nunca me he fiado de los Klingons y nunca lo haré.

3 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Las dos consultas para obtener fecha y hora se pueden hacer a la vez:

    SQL> select instance_name ,version, to_char(sysdate,'DD-MM-YYYY HH24-MI') from v$instance;

    INSTANCE_NAME VERSION TO_CHAR(SYSDATE,
    ---------------- ----------------- ----------------
    SID 11.1.0.7.0 28-02-2014 16-17

    Y ademas, te falta un INTO ;)

    ResponderEliminar
    Respuestas
    1. al utilizar las variables no hace falta into , solo si utilizas pl/sql
      column demo new_var var_demo

      select "Holakease" var_demo from dual;

      Eliminar