Variables SQL: SQL Server declara, establece y selecciona variables
¿Qué es una variable en SQL Server?
En MS SQL, las variables son el objeto que actúa como marcador de posición para una ubicación de memoria. La variable contiene un valor de datos único.
Tipos de variables en SQL: local, global
MS SQL tiene dos tipos de variables:
- Variable local
- Variable global.
Sin embargo, el usuario sólo puede crear una variable local.
La siguiente figura explica dos tipos de variables disponibles en Servidor MS SQL.
Variable local
- Un usuario declara la variable local.
- De forma predeterminada, una variable local comienza con @.
- Cada alcance de variable local tiene la restricción al lote o procedimiento actual dentro de cualquier sesión determinada.
Variable global
- El sistema mantiene la variable global. Un usuario no puede declararlos.
- La variable global comienza con @@
- Almacena información relacionada con la sesión.
Cómo DECLARAR una variable en SQL
- Antes de utilizar cualquier variable en un lote o procedimiento, es necesario declarar la variable.
- El comando DECLARAR se utiliza para DECLARAR la variable que actúa como marcador de posición para la ubicación de memoria.
- Sólo una vez realizada la declaración, se puede utilizar una variable en la parte posterior del lote o procedimiento.
Sintaxis TSQL:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
Reglas:
- La inicialización es algo opcional al declarar.
- De forma predeterminada, DECLARE inicializa la variable en NULL.
- El uso de la palabra clave "AS" es opcional.
- Para declarar más de una variable local, utilice una coma después de la primera definición de variable local y luego defina el siguiente nombre de variable local y tipo de datos.
Ejemplos de declaración de una variable
Consulta: Con 'AS'
DECLARE @COURSE_ID AS INT;
Consulta: Sin 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Consulta: DECLARAR dos variables
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Asignar un valor a la variable SQL
Puede asignar un valor a una variable de la siguiente manera three formas:
- Durante la declaración de variables utilizando la palabra clave DECLARE.
- Usando SET
- Usando SELECCIONAR
Echemos un vistazo a las tres formas en detalle:
Durante la declaración de variables usando la palabra clave DECLARE
Sintaxis T-SQL:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Aquí, después del tipo de datos podemos usar '=" seguido del valor a asignar
consulta:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Usando SQL SET VARIABLE
A veces queremos mantener la declaración y la inicialización separadas. SET se puede utilizar para asignar valores a la variable, después de declarar una variable. A continuación se muestran las diferentes formas de asignar valores utilizando SET:
Ejemplo: Asignar un valor a una variable usando SET
Sintaxis:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
consulta:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Ejemplo: Asigne un valor a múltiples variables utilizando SET.
Sintaxis:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Regla: Se puede utilizar una palabra clave SET para asignar un valor solo a una variable.
consulta:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Ejemplo: Asignar un valor a una variable con un Subconsulta escalar usando SET
Sintaxis:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
Reglas:
- Incluya la consulta entre paréntesis.
- La consulta debe ser una consulta escalar. Una consulta escalar es una consulta cuyos resultados son solo una fila y una columna. De lo contrario, la consulta generará un error.
- Si la consulta devuelve cero filas, entonces la variable se establece en VACÍA, es decir, NULL.
Suposición: Supongamos que tenemos la tabla como 'Guru99' con dos columnas como se muestra a continuación:
Usaremos la tabla 'Guru99' en los tutoriales posteriores.
Ejemplo 1: Cuando la subconsulta devuelve una fila como resultado.
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Ejemplo 2: cuando la subconsulta devuelve cero fila como resultado
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
En este caso particular, el valor de la variable es VACÍO, es decir, NULL.
Usando SQL SELECCIONAR VARIABLE
Al igual que SET, también podemos usar SELECT para asignar valores a las variables y publicar una variable usando DECLARE. A continuación se muestran diferentes formas de asignar un valor usando SELECT:
Ejemplo: Asignar un valor a una variable usando SELECT
Sintaxis:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
consulta:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
Ejemplo: Asignar un valor a múltiples variables usando SELECT
Sintaxis:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Reglas: A diferencia de SET, SELECT se puede utilizar para asignar un valor. a múltiples variables separados por el coma.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Ejemplo: Asignar el valor a una variable con una Subconsulta usando SELECT
Sintaxis:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
Reglas:
- Adjunte la consulta entre paréntesis.
- La consulta debe ser escalar. La consulta escalar es la consulta cuyo resultado es una fila y una columna. De lo contrario, la consulta generará un error.
- Si la consulta devuelve cero filas, entonces la variable está VACÍA, es decir, NULL.
- Reconsiderar nuestra tabla 'Guru99'
Ejemplo 1: Cuando la subconsulta devuelve una fila como resultado.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Ejemplo 2: Cuando la subconsulta devuelve cero fila como resultado
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
En este caso particular, la variable está VACÍA, es decir, NULL.
Ejemplo 3: Asigne un valor a una variable con una instrucción SELECT normal.
Sintaxis:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
Reglas:
- A diferencia de SET, si la consulta genera varias filas, el valor de la variable se establece en el valor de la última fila.
- Si la consulta devuelve cero filas, entonces la variable se establece en VACÍA, es decir, NULL.
Consulta 1: la consulta devuelve una fila.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Consulta 2: la consulta devuelve varias filas.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
En este caso especial, el valor de la variable es establecido en el valor de la última fila.
Consulta 3: la consulta devuelve cero filas.
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
En este caso particular, la variable está VACÍA, es decir, NULL.
Otros ejemplos de variables SQL
Usando variable en la consulta
consulta:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
¡Datos interesantes sobre las variables de SQL Server!
- Se puede mostrar una variable local usando IMPRIMIR y SELECCIONAR COMANDO
- El tipo de datos de tabla no permite el uso de "AS" durante la declaración.
- SET cumple con los estándares ANSI, mientras que SELECT no.
- También se permite crear una variable local con el nombre @. Podemos declararlo como, por ejemplo:
'DECLARE @@ as VARCHAR (10)'
Resum
- Las variables son el objeto que actúa como marcador de posición.
- Existen dos tipos de Variable: Local y Global
- Podemos asignar la variable de las siguientes tres maneras: Usando 1) DECLARE 2) Usando SET 3) USANDO SELECT