web-dev-qa-db-ja.com

SQLのローカル変数にデフォルト値を割り当てることができません

私は次のようなローカル変数を宣言しようとしています:

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

そして、私はエラーが発生しています:

ローカル変数にデフォルト値を割り当てることはできません。

ドキュメント

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

私が間違っているのは何ですか?

18
Vladimirs

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:Upgrade

このエラーを回避するもう1つの方法は、少し難解なソリューションですが、SQL Server 2008にアップグレードすることです。SQLServer 2008では、DECLAREステートメントの変数に値を割り当てることができます。

33
Veera

このエラーが発生します

ローカル変数にデフォルト値を割り当てることができません

sQL Server 2005以前を実行している場合、1つのステートメントで変数を宣言して値を割り当てようとします。

何かのようなもの -

DECLARE @Var Varchar(15) = 'Test'

メッセージ139、レベル15、状態1、行0
ローカル変数にデフォルト値を割り当てることはできません

SQL Server 2008以降のバージョンでは変数宣言が強化されており、複数のシステムにコードを展開しているときに、今日このことに気付きました。

enter image description here

明らかに、1つの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'
3
CODeeerrrrrrrr

エラー

ローカル変数にデフォルト値を割り当てることができません

default valuelocal variableに割り当てているときにSQL Server 2005を使用している場合に発生します。

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
2
Saravana Kumar