Introducción al SQL (Parte 3: Variables)

  En entradas anteriores se ha hablado del lenguaje estructurado de consultas ["Structured Query Language" ("SQL"), en inglés], el cual es un lenguaje específico del dominio utilizado en programación, diseñado para administrar, y recuperar información de sistemas de gestión de bases de datos relacionales.
  El SQL consiste en un lenguaje de definición de datos, un lenguaje de manipulación de datos y un lenguaje de control de datos. Su alcance incluye la inserción de datos, consultas, actualizaciones y borrado, la creación y modificación de esquemas y el control de acceso a los datos. Por otra parte, el SQL también se describe como un lenguaje declarativo, puesto que incluye elementos procesales.
  En la actualidad, este tipo de lenguaje es el lenguaje de base de datos más usado. De hecho, hace tiempo que pasó a ser el estándar del ANSI y de la ISO, siendo revisado para incluir más características desde entonces. No obstante, la mayoría de los códigos SQL no son completamente portables entre sistemas de bases de datos diferentes sin ajustes.
  La variable, en SQL, es el objeto que actúa como marcador de posición para una ubicación de memoria, y contiene un valor de datos único.
  Generalmente, las variables permiten almacenar un valor y recuperarlo más adelante para emplearlo en otras sentencias.
  La utilidad de las variables en la gestión de una base de datos, consiste en que almacenan valores para utilizarlos en otras consultas.

TIPOS DE VARIABLES

  En los guiones del lenguaje estructurado de consultas se pueden emplear dos tipos de variables: locales y globales.

Variables locales
  Las variables locales, o variables de usuario, son específicas de cada conexión y se liberan automáticamente al abandonar la misma. Dichas variables son creadas por el usuario y su sintaxis genérica suele ser @<nombre de la variable>; el nombre de la variable puede tener cualquier caracter.
  Cada alcance de variable local tiene la restricción al lote o procedimiento actual dentro de cualquier sesión determinada.
  Toda variable debe declararse para poder utilizarse. Aunque hay una sintaxis básica para ambas acciones en SQL, ésta puede variar según la base de datos relacional en la que se use (MySQL, SQL Server, Oracle, PostgreSQL...). La sintaxis básica es:
DECLARE @<nombre de la variable1> <tipo de dato>, @<nombre de la variable2> <tipo de dato>, … ;


  Una variable declarada existe dentro del entorno en que se declara; se debe declarar y emplear la variable en el mismo lote de sentencias, porque si se declara una variable y luego, en otro bloque de sentencias, se pretende usarla, dicha variable ya no existe. Por otra parte, a pesar de que una variable puede ser definida con cualquier tipo de dato, incluso de un tipo de dato definido por el usuario, no se podrá declarar con los tipos “text”, “ntext” e “image”.
  Para almacenar un valor en una variable se coloca el signo igual (=) entre la variable y el valor a asignar (puede ser un comodín). En el caso de que se le asigne un valor inicial, se puede utilizar SET (sintaxis: SET @<nombre de la variable> =<valor>;), o BEGIN (sintaxis: BEGIN @<nombre de la variable> := <valor>;); si, por el contrario, se le asigna un valor resultado de una consulta, se suele emplear SELECT... FROM...WHERE (sintaxis: SELECT @<nombre de la variable> = <valor> FROM <nombre base de datos> WHERE <nombre de columna>='<valor de celda>';). Cualquier variable a la que no se le ha asignado un valor contiene "null".
   Es posible ver el contenido de una variable mediante el comando SELECT utilizándolo con la siguiente sintaxis:
SELECT @<nombre de la variable>

Variables globales
  En términos informáticos generales, una variable global es una variable accesible en todos los ámbitos de un programa informático. No obstante, en el caso del lenguaje estructurado de consultas, la variable global es una variable del sistema que almacena información relacionada con la sesión en la base de datos.
  Las variables globales tienen valores establecidos por el servidor de base de datos. El sistema mantiene la variable global, por lo que un usuario no puede declararla, ni modificar sus valores directamente.
 La sintaxis de una variable global suele ser
@@<NOMBRE DE VARIABLE>.
  Al igual que sucedía con la variable local, se puede ver el valor de una variable global gracias al comando
SELECT con la siguiente sintaxis:
SELECT @@<NOMBRE DE VARIABLE>
 
  Además, en SQL integrado, se pueden seleccionar variables globales en una lista de variables del anfitrión.
  Puede verse una lista de variables globales relevantes de SQL disponibles en la siguiente tabla:
 
Nombre Significado
@@dbts
   Un valor de tipo TIMESTAMP que representa el último valor generado utilizado para todas las columnas definidas con DEFAULT TIMESTAMP.
@@error
   Se utiliza comúnmente para comprobar el estado de error (correcto o fallido) de la última sentencia ejecutada. Contiene 0 si la transacción anterior tuvo éxito; de lo contrario, contiene el último número de error generado por el sistema. Una sentencia como IF @@error != 0 RETURN provoca una salida si se produce un error. Cada sentencia SQL restablece @@error, por lo que la comprobación de estado debe seguir inmediatamente a la sentencia cuyo éxito está en duda.

@@fetch_status

   Contiene información de estado resultante de la última declaración de búsqueda. Puede contener los siguientes valores: "0" (la declaración de búsqueda se completó exitosamente), "-1" (la declaración de búsqueda generó un error), "-2" (no hay más datos en el conjunto de resultados).     Esta función es la misma que @@sqlstatus, excepto que devuelve valores diferentes. Es para compatibilidad con Microsoft SQL Server.
@@identity
   Último valor insertado en cualquier columna IDENTITY o DEFAULT AUTOINCREMENT mediante una instrucción INSERT o SELECT... INTO.
@@isolation
   Nivel de aislamiento actual. Toma el valor del nivel activo.
@@procid
   Identificador de procedimiento almacenado del procedimiento que se está ejecutando actualmente.

@@rowcount

   Número de filas afectadas por la última declaración. Su valor debe comprobarse inmediatamente después de la declaración.
 Inserta, actualiza y elimina el conjunto @@rowcount según el número de filas afectadas.
  Con cursores, @@rowcount representa el número acumulado de filas devueltas desde el conjunto de resultados del cursor al cliente, hasta la última solicitud de búsqueda.
  A diferencia de Adaptive Server Enterprise (motor de bases de datos de la compañía Sybase), @@rowcount no se restablece a cero mediante ninguna declaración que no afecte a las filas, como una declaración IF.

@@servername
   Nombre del servidor de base de datos actual.
@@sqlstatus
   Contiene información de estado resultante de la última declaración de búsqueda. Puede contener los siguientes valores: "0" (la declaración de búsqueda se completó exitosamente), "1" (la declaración de búsqueda generó un error), "2" (no hay más datos en el conjunto de resultados).
@@version
   Número de versión de la versión actual del servidor.
@@LANGUAGE  Devuelve el nombre del idioma en uso.
@@SERVERNAME  Devuelve el nombre del servidor.
@@SPID  Devuelve el identificador de proceso de servidor del proceso de usuario actual.
@@TRANCOUNT
  Número de transacciones activas, es decir, que han sido iniciadas con BEGIN... TRANSACTION.


  Aguardo que la presente entrada haya sido interesante para el lector. Si es así, espero que éste la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.