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

1 comentario:

  1. Me queda claro, pero como limpio la variable de sustitución, para que esta no quede cargada con el valor anterior al ser ejecutado nuevamente la consulta?. Esto me sucede al usar el doble &&, ya que el mismo dato lo uso en más de una consulta. Agradeciendo la información. Atte. Alex Rivera Herrera.

    ResponderEliminar