私は次のようなローカル変数を宣言しようとしています:
DECLARE @thresholdDate DATETIME = '2014-11-30'
そして、私はエラーが発生しています:
ローカル変数にデフォルト値を割り当てることはできません。
ドキュメント :
DECLARE @find varchar(30);
/* Also allowed:
DECLARE @find varchar(30) = 'Man%';
*/
私が間違っているのは何ですか?
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ステートメントの変数に値を割り当てることができます。
このエラーが発生します
ローカル変数にデフォルト値を割り当てることができません
sQL Server 2005以前を実行している場合、1つのステートメントで変数を宣言して値を割り当てようとします。
何かのようなもの -
DECLARE @Var Varchar(15) = 'Test'
メッセージ139、レベル15、状態1、行0
ローカル変数にデフォルト値を割り当てることはできません
SQL Server 2008以降のバージョンでは変数宣言が強化されており、複数のシステムにコードを展開しているときに、今日このことに気付きました。
明らかに、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'
エラー
ローカル変数にデフォルト値を割り当てることができません
default value
をlocal 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