miércoles, 30 de diciembre de 2015

Variables en SQL SERVER

Buenas tardes queridos lectores, en esta ocasión trataremos el tema de las variables en SQL Server, como declararlas y como asignarles valor. Vamos a ver algunos ejemplos como siempre.
SQL SERVER solo cuenta con un operador universal para la asignación de valores. El operador igual (=) se tendrá que colocar en cualquier expresión que necesite asignar un valor de cualquier tipo.

Ejemplo 1: Script que permita asignar el valor de PI=3.1415 a una variable.

Solución con SELECT:

DECLARE @PI FLOAT
SET @PI=3.1415
SELECT @PI AS [VALOR PI]
GO

En el script se declara una variable de tipo float, cada vez que se declara una variable a nivel TRANSACT-SQL debe añadirle una arroba (@) al iniciar su declaración seguidamente se declara como float porque el valor a almacenar es decimal.
En la segunda línea se le asigna el valor 3.1415 a la variable @PI, dentro de TRANSACT-SQL la asignación se realiza con SET. La impresión de la variable con la sentencia SELECT se tiene que realizar con el mismo símbolo con el que se declaró, es decir, el arroba (@) no debe despegarse de dicha variable, tenga en cuenta que si no se coloca este operador la sentencia SELECT asumirá que PI sin arroba es la columna de alguna tabla.

Solución con PRINT:

DECLARE @PI FLOAT
SET @PI=3.1415
PRINT 'EL VALOR DE PI ES: '+LTRIM(CAST(@PI AS FLOAT))
GO


En el script con PRINT ocurre un desperfecto al momento de imprimir el valor de la variable @PI, si usamos la función STR como en los ejercicios anteriores ocurriría que la respuesta no tomaría en cuenta los decimales, es decir, el resultado sería 3. En este caso se tiene que usar una función especializada en conversiones como lo es CAST que permite convertir a un tipo específico de datos, más adelante, veremos a detalle dicha función.

Ejemplo 2: Script que permita capturar en una variable al correo electrónico del pasajero con código P0004. Usando variables TRANSACT-SQL, PRINT y SELECT para la impresión del correo.
Solución con PRINT
DECLARE @CORREO VARCHAR(50)

SELECT @CORREO=EMAIL
       FROM PASAJERO
       WHERE IDPASAJERO = 'P0004'
PRINT 'EL EMAIL DEL PASAJERO CON CODIGO P0004 ES: >>' + @CORREO
GO

En script se declara una variable de tipo VARCHAR(50) para poder almacenar el correo electrónico del pasajero, ahora la sentencia SELECT se comportará como asignador del valor, es decir, dará valor a la variable @CORREO hay que tener en cuenta que la sentencia SELECT debe emitir un solo valor puesto que si la consulta se implementa mal y devolviera varios registros la variable no lo soportará, ya que solo permite asignar valores VARCHAR.
Para lograr esta capacidad, se tendrá que condicionar la consulta y así asegurar que se le asigne un solo valor a la variable, esto es gracias a la clausula WHERE condicionando que el código a buscar sea exactamente P0004 sabiendo que por ser columna con llave no permitirá duplicidad de valores.
La mejor manera de emitir la respuesta es haciendo uso de la función PRINT por eso se muestra como primera solución al caso. Aquí considere que no se convierte la variable @CORREO por ser una variable de tipo cadena.

Solución con SELECT:


DECLARE @CORREO VARCHAR(50)
SELECT @CORREO=EMAIL
       FROM PASAJERO
       WHERE IDPASAJERO='P0004'
SELECT 'P0004' AS [IDPASAJERO],
       @CORREO AS EMAIL
GO

En este script se invoca a otra sentencia SELECT, la primera asignara el correo a la variable @CORREO y el segundo mostrará en pantalla el resultado.

Hasta aquí el post de las variables en SQL Server, como verán, ésto solo fue una introducción, seguiremos con mas ejemplos mas avanzados en las siguientes entradas, les deseo un FELIZ AÑO NUEVO 2016, si les gustó el post por favor compartan, den +1 o clic en algún anuncio que les agrade.

Muchas gracias por haberme seguido ya casi un año. 

Dios los bendiga

Banderas de Visitantes

Flag Counter