2014-11-21 15 views
15

Sto cercando di dichiarare la variabile locale come:Non è possibile assegnare un valore predefinito a una variabile locale in SQL

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

E sto ottenendo errore:

Cannot assign a default value to a local variable.

Secondo documentation:

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

Cosa sto facendo male?

+4

Non è possibile in 'SQL SERVER 2005'. È supportato da 'SQL SEVER 2008' e sopra –

+1

Nel tuo link ai documenti, usa il menu a discesa * Altre versioni * in alto per selezionare * SQL 2005 * per la sintassi corretta. –

risposta

26

Prima di SQL Server 2008, l'assegnazione di un valore predefinito (o valore iniziale) a una variabile locale non è consentita; altrimenti si incontrerà questo messaggio di errore.

Soluzione 1: (Uso SET)

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

Per maggiori dettagli circa l'errore: http://www.sql-server-helper.com/error-messages/msg-139.aspx

Soluzione 2: (Aggiorna)

Un altro modo per evitare questo errore, che è un po 'una soluzione inverosimile, è l'aggiornamento a SQL Server 2 008. SQL Server 2008 ora consente l'assegnazione di un valore a una variabile nell'istruzione DECLARE.

+0

Hai letto una domanda? Voglio il valore predefinito (sintassi in linea) – Vladimirs

+3

Hai letto l'errore. 'Impossibile assegnare un valore predefinito a una variabile locale. Ciò significa che la versione di SQL non la supporta. Secondo il tuo link 'Si applica a: SQL Server (SQL Server 2008 fino alla versione corrente), Database SQL di Azure. – Jaques

+1

Per questo devi acquistare SQL server 2012 – Veera

2

L'errore

Cannot assign a default value to a local variable

si verifica se si utilizza SQL Server 2005 assegnando default value-local variable.

Per SQL Server 2005 uso di questo codice:

DECLARE @thresholdDate AS DATETIME 

SET @thresholdDate = '2014-11-30' 

SELECT @thresholdDate 

Per SQL Server 2008 e successivi è possibile utilizzare questo invece:

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

'DECLARE @thresholdDate DATETIME = '2014-11-30' 'funzionerà con' SQL SERVER 2008' + .. –

2

vi ha colpito questo errore

Cannot assign a default value to a local variable

in cas e si sta eseguendo SQL Server 2005 o versioni precedenti e si tenta di dichiarare una variabile e assegnarla a un valore in un'unica istruzione.

Qualcosa di simile -

DECLARE @Var Varchar(15) = 'Test' 

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

di dichiarazione delle variabili è stato migliorato in SQL Server 2008 e le versioni più recenti, e ho capito che questo oggi, quando mi è stato la distribuzione di un codice per più sistemi.

enter image description here

A quanto pare abbiamo anche la flessibilità di utilizzare solo un Declare per dichiarare più variabili -

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

in SQL Server 2005 o versioni precedenti, è necessario dichiarare la variabile e quindi assegnare è un valore che utilizza l'istruzione Set.

Esempio -

DECLARE @Var Varchar(15) 
SET @Var = 'Test' 
Problemi correlati