jueves, 28 de junio de 2007

Variables en SQL*Plus (parte 1)

Hay tres tipos de variables en SQL*Plus y suelen causar confusión.
Estas son: variables de usuario, variables de sustitución y bind variables.

Aquí va la primera de ellas, más adelante revisaremos las otras.

VARIABLES DE USUARIO

Se definen de la siguiente forma:

SQL> DEFINE u_nombre = ANDREA

Para confirmar que haya quedado el valor guardado:

SQL> DEFINE u_nombre
DEFINE U_VAR1 = "ANDREA" (CHAR)


El comando DEFINE nos permite definir una cadena que se sustituye textualmente en cualquier lugar de nuestro script. Aunque quede definida como CHAR realmente no importa el tipo ya que la sustitución se realiza antes de ejecutar el código y además no incluye comillas. Por estas razones podemos jugar a 'construir' el script con nuestras variables de sustitución.
Si queremos usar la entrada como varchar le agregamos las comillas nosotros, si queremos usarla como número no las agregamos. Para recuperar el contenido de la variable usamos el símbolo ampersand.

Por ejemplo: SELECT * FROM empleado WHERE nombre = '&u_var1';

Ahora definimos una variable con un número...

SQL> define u_edad = 25
SQL> define u_edad

DEFINE U_EDAD = "25" (CHAR)

...y la usamos de la misma forma pero sin incluir las comillas:

SELECT * FROM empleado WHERE edad = &u_edad;

Las variables de usuario son útiles cuando se define su valor al comienzo de un script y luego se utiliza varias veces en el código.

No solamente podemos sustituir valores de columnas, sino también nombres de columnas o de tablas, incluso fragmentos de código, permitiéndonos hacer scripts más dinámicos.

Un uso interesante es 'aceptar' el nombre de una columna y luego usarla para parametrizar el ORDER BY de un reporte.

Ver también:
Variables en SQLPlus (parte 2) - Sobre variables de sustitución
Variables en SQLPlus (parte 3) - Sobre variables bind

No hay comentarios: