jueves, 21 de agosto de 2014

Variables de sustitución


En todas las publicaciones anteriores hemos ejecutado consultas con columnas, valores y condiciones fijos, vamos a hacer nuestras consultas dinámicas, donde siempre se ejecute la misma consulta con valores diferentes.
El uso de las variables de sustitución está limitado SQL Plus o SQL Developer.
Veamos un ejemplo de las variables de sustitución:
SELECT
  *
FROM hr.employees
WHERE employee_id=&id_del_empleado;
Al momento de ejecutar la consulta, se despliega una ventana solicitando el valor que va a ir en la variable de sustitución &id_del_empleado:


Para este caso se buscó el empleado con id 204:

Se debe tener en cuenta los tipos de datos, realmente lo que hace la variable de sustitución es pedir un valor y ese valor es remplazado textualmente sin alguna modificación, si consultamos un valor de tipo carácter o cadena de caracteres, de deben poner las comillas simples en la ventana donde pide el valor, veamos un ejemplo donde consultamos por el nombre del empleado:
SELECT
   employee_id
  ,last_name
  ,hire_date
  ,job_id
FROM hr.employees
WHERE last_name=&apellido_del_empleado;


Veríamos un error por tipo de dato

Si el al  ejecutar la consulta lo encerramos en comillas simples, de estamos diciendo que es una cadena de caracteres y se ejecuta sin algún error:


Así se pueden manejar los caracteres, las cadenas de caracteres y fechas.
Las variables de sustitución pueden ser usadas en las clausulas SELECT, WHERE y ORDER BY.
Veamos un ejemplo:
SELECT
   employee_id
  ,last_name
  ,hire_date
  ,&columna_a_mostrar
FROM hr.employees
WHERE last_name=&apellido_del_empleado
ORDER BY &ordenado_por;

El resultado seria:


Usando doble ampersand en variables de sustitución
Se usa doble ampersand (&&) para definir las variables de sustitución que se están reusando:
SELECT
   employee_id
  ,last_name
  ,hire_date
  ,&&columna
FROM hr.employees
WHERE last_name='Whalen'
ORDER BY &&columna;


Observemos que la variable de sustitución es solo una en las dos cláusulas que se usa, se muestra solo una ventana pidiendo una sola vez el valor y la función del doble ampersand es reusarese valor en los dos lados donde se usa, el resultado seria:


Recuerde que usted puede definir sus variables a usar

Siguiente tema: comandos  DEFINE y VERIFY