Cannot assign a default value to a local variable (SQL Server)

Send Us a Sign! (Contact Us!)
Word PDF Epub Text
XML OpenOffice XPS MHT
Error Message

Server: Msg 139, Level 15, State 1, Line 1
Cannot assign a default value to a local variable.

Causes

Prior to SQL Server 2008, assigning a default value (or initial value) to a local variable is not allowed; otherwise this error message will be encountered.

[tweet]

This error message can easily be generated using the following DECLARE statement entered in either SQL Server 2000 or SQL Server 2005:

DECLARE @CurrentDate DATETIME = GETDATE()

Msg 139, Level 15, State 1, Line 0 Cannot assign a default value to a local variable.

Here’s another sample:

 DECLARE @Radius FLOAT = 12.5

DECLARE @Diameter FLOAT = PI() * 2 * @Radius

Msg 139, Level 15, State 1, Line 0 Cannot assign a default value to a local variable.

One way of knowing if you are connected to SQL Server 2008 is with this error message. If you don’t get this error message when you declare a local variable and assigning it a value, then you are connected to SQL Server 2008. Otherwise, you are connected to either SQL Server 2005 or SQL Server 2000.

Solution – Workaround

To avoid this error, simply separate the declaration of the local variable from the assigning of its initial value. In the case of the first example above, the script will look as follows:

 DECLARE @CurrentDate DATETIME

SET @CurrentDate = GETDATE()

In the case of the second example, the script will look as follows:

 DECLARE @Radius FLOAT

DECLARE @Diameter FLOAT

SET @Radius = 12.5

SET @Diameter = PI() * 2 * @Radius

Another way of avoiding this error, which is a little bit a far-fetched solution, is to upgrade to SQL Server 2008SQL Server 2008 now allows the assigning of a value to a variable in theDECLARE statement.

SOURCE

LINK

LANGUAGE
ENGLISH

2 thoughts on “Cannot assign a default value to a local variable (SQL Server)”

Comments are closed.