2014-11-21 3 views
15

ordnet ich lokale Variable wie zu erklären versuchen:kann keinen Standardwert auf eine lokale Variable in SQL

DECLARE @thresholdDate DATETIME = '2014-11-30' 

Und ich bin immer Fehler:

Cannot assign a default value to a local variable.

Per documentation:

DECLARE @find varchar(30); 
/* Also allowed: 
DECLARE @find varchar(30) = 'Man%'; 
*/ 

Was mache ich falsch?

+4

Es ist nicht möglich in 'SQL Server 2005'. Es wird von 'SQL SEVER 2008' und höher unterstützt –

+1

In Ihrem Link zu den Dokumenten verwenden Sie die Dropdown-Liste * Andere Versionen *, um * SQL 2005 * für die korrekte Syntax auszuwählen. –

Antwort

26

Vor SQL Server 2008 ist es nicht zulässig, einer lokalen Variablen einen Standardwert (oder Anfangswert) zuzuweisen. Andernfalls wird diese Fehlermeldung angezeigt.

Lösung 1: (Use SET)

DECLARE @thresholdDate DATETIME 
set @thresholdDate = '2014-11-30' 

Für weitere Informationen über den Fehler: http://www.sql-server-helper.com/error-messages/msg-139.aspx

Lösung 2: (-Upgrade)

Ein anderer Weg zur Vermeidung Dieser Fehler, der ein bisschen eine weit hergeholte Lösung ist, ist ein Upgrade auf SQL Server 2 008. SQL Server 2008 ermöglicht jetzt das Zuweisen eines Werts zu einer Variablen in der DECLARE-Anweisung.

+0

Haben Sie eine Frage gelesen? Ich möchte den Standardwert (Inline-Syntax) – Vladimirs

+3

Haben Sie den Fehler gelesen. 'Kann einer lokalen Variablen keinen Standardwert zuweisen. 'Dies bedeutet, dass Ihre SQL-Version dies nicht unterstützt. Entsprechend Ihrem Link 'Gilt für: SQL Server (SQL Server 2008 durch aktuelle Version), Azure SQL Database.' – Jaques

+1

Dafür müssen Sie SQL Server 2012 kaufen – Veera

2

Der Fehler

Cannot assign a default value to a local variable

tritt auf, wenn Sie SQL Server 2005 verwenden, während default value-local variable zuweisen.

Für SQL Server 2005 Verwendung dieser Code:

DECLARE @thresholdDate AS DATETIME 

SET @thresholdDate = '2014-11-30' 

SELECT @thresholdDate 

Für SQL Server 2008 und neuere Sie diese stattdessen verwenden können:

DECLARE @thresholdDate DATETIME = '2014-11-30' 
SELECT @thresholdDate 
+2

'DECLARE @thresholdDate DATETIME = '2014-11-30' 'wird in' SQL SERVER 2008' arbeiten + .. –

2

Sie treffen diesem Fehler

Cannot assign a default value to a local variable

in cas Wenn Sie SQL Server 2005 oder früher ausführen, versuchen Sie, eine Variable zu deklarieren und ihr einen Wert in einer Anweisung zuzuweisen.

So etwas wie -

DECLARE @Var Varchar(15) = 'Test' 

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

Variablendeklaration wird in SQL Server 2008 und neuere Versionen erweitert, und ich erkennen, das heute, als ich einen Code für mehrere Systeme bereitstellen.

enter image description here

Anscheinend haben wir auch die Flexibilität, um nur eine Declare-Anweisung zu verwenden, um mehrere Variablen zu deklarieren -

DECLARE @Var Varchar(15) = 'Test', 
     @Char Varchar(10) = 'Test2', 
     @Char2 Varchar(10) = 'Test3' 

In SQL Server 2005 oder früher, müssen Sie die Variable deklarieren und dann zuweisen Es ist ein Wert, der die Set-Anweisung verwendet.

Beispiel -

DECLARE @Var Varchar(15) 
SET @Var = 'Test' 
Verwandte Themen