ver variable valores valor una procedimiento locales globales declarar declaran como cambiar calcular asignar almacenado sql sql-server sql-server-2005 default-value declare

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''