Невозможно присвоить значение по умолчанию локальной переменной в SQL
Я пытаюсь объявить локальную переменную как:
DECLARE @thresholdDate DATETIME = '2014-11-30'
и я получаю ошибку:
невозможно присвоить значение по умолчанию локальной переменной.
по состоянию на документация:
DECLARE @find varchar(30);
/* Also allowed:
DECLARE @find varchar(30) = 'Man%';
*/
что я делаю неправильно?
3 ответов
до SQL Server 2008 назначение значения по умолчанию (или начального значения) локальной переменной не допускается; в противном случае это сообщение об ошибке будет обнаружено.
Решение 1: (использовать SET
)
DECLARE @thresholdDate DATETIME
set @thresholdDate = '2014-11-30'
дополнительные сведения об ошибке : http://www.sql-server-helper.com/error-messages/msg-139.aspx
решение 2: (обновление)
другой способ избежать этой ошибки, которая это немного надуманное решение, это обновление до SQL Server 2008. SQL Server 2008 теперь позволяет присваивать значение переменной в инструкции DECLARE.
ошибка
невозможно присвоить значение по умолчанию локальной переменной
возникает, если вы используете SQL Server 2005 при назначении default value
to local variable
.
на SQL Server 2005 используйте этот код:
DECLARE @thresholdDate AS DATETIME
SET @thresholdDate = '2014-11-30'
SELECT @thresholdDate
на SQL Server 2008 и новее вы можете использовать это вместо:
DECLARE @thresholdDate DATETIME = '2014-11-30'
SELECT @thresholdDate
вы нажмете эту ошибку
невозможно присвоить значение по умолчанию локальной переменной
в случае, если вы используете SQL Server 2005 или более ранней версии, и вы пытаетесь объявить переменную и назначить ей значение в одном операторе.
что-то вроде -
DECLARE @Var Varchar(15) = 'Test'
Сообщение 139, Уровень 15, Состояние 1, Строка 0
Невозможно присвоить значение по умолчанию локальной переменной
объявление переменной было улучшено в SQL Server 2008 и более новых версиях, и я понял это сегодня, когда развертывал код для нескольких систем.
по-видимому, у нас также есть гибкость, чтобы просто использовать один оператор Declare для объявления нескольких переменных -
DECLARE @Var Varchar(15) = 'Test',
@Char Varchar(10) = 'Test2',
@Char2 Varchar(10) = 'Test3'
В SQL Server 2005 или более ранней версии необходимо объявить переменную, а затем присвоить ей значение с помощью инструкции Set.
пример
DECLARE @Var Varchar(15)
SET @Var = 'Test'