valores - declarar variables locales en sql
No se puede asignar un valor predeterminado a una variable local en SQL (3)
Estoy tratando de declarar variable local como:
DECLARE @thresholdDate DATETIME = ''2014-11-30''
Y estoy recibiendo error:
No se puede asignar un valor predeterminado a una variable local.
Según la documentation :
DECLARE @find varchar(30);
/* Also allowed:
DECLARE @find varchar(30) = ''Man%'';
*/
¿Que estoy haciendo mal?
Antes de SQL Server 2008, no se permite asignar un valor predeterminado (o valor inicial) a una variable local; De lo contrario, se encontrará este mensaje de error.
Solución 1: (Use SET
)
DECLARE @thresholdDate DATETIME
set @thresholdDate = ''2014-11-30''
Para obtener más detalles sobre el error: http://www.sql-server-helper.com/error-messages/msg-139.aspx
Solución 2: ( Actualizar )
Otra forma de evitar este error, que es un poco una solución inverosímil, es actualizar a SQL Server 2008. SQL Server 2008 ahora permite asignar un valor a una variable en la declaración DECLARE.
El error
No se puede asignar un valor predeterminado a una variable local
ocurre si está utilizando SQL Server 2005 mientras asigna un default value
a local variable
.
Para SQL Server 2005 use este código:
DECLARE @thresholdDate AS DATETIME
SET @thresholdDate = ''2014-11-30''
SELECT @thresholdDate
Para SQL Server 2008 y versiones posteriores , puede usar esto en su lugar:
DECLARE @thresholdDate DATETIME = ''2014-11-30''
SELECT @thresholdDate
Golpearás este error
No se puede asignar un valor predeterminado a una variable local
En caso de que esté ejecutando SQL Server 2005 o anterior, intente declarar una variable y asignarle un valor en una declaración.
Algo como -
DECLARE @Var Varchar(15) = ''Test''
Mensaje 139, Nivel 15, Estado 1, Línea 0
No se puede asignar un valor predeterminado a una variable local
La declaración de variables se ha mejorado en SQL Server 2008 y versiones más nuevas, y esto me di cuenta hoy cuando estaba implementando un código para varios sistemas.
Aparentemente, también tenemos la flexibilidad de usar solo una declaración Declare para declarar múltiples variables:
DECLARE @Var Varchar(15) = ''Test'',
@Char Varchar(10) = ''Test2'',
@Char2 Varchar(10) = ''Test3''
En SQL Server 2005 o anterior, deberá declarar la variable y luego asignarle un valor mediante la instrucción Set.
Ejemplo -
DECLARE @Var Varchar(15)
SET @Var = ''Test''