默认值赋给一个局部变量我想声明局部变量,如:不能在SQL
DECLARE @thresholdDate DATETIME = '2014-11-30'
而且我得到错误:
Cannot assign a default value to a local variable.
DECLARE @find varchar(30);
/* Also allowed:
DECLARE @find varchar(30) = 'Man%';
*/
我做错了什么?
默认值赋给一个局部变量我想声明局部变量,如:不能在SQL
DECLARE @thresholdDate DATETIME = '2014-11-30'
而且我得到错误:
Cannot assign a default value to a local variable.
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:(升级)
避免的另一种方式此错误有点牵强的解决方案是升级到SQL Server 2 008.现在,SQL Server 2008允许在DECLARE语句中为变量赋值。
错误
Cannot assign a default value to a local variable
如果您正在使用SQL Server 2005中而分配default value
到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
'DECLARE @thresholdDate DATETIME ='2014-11-30' '将在'SQL SERVER 2008' +中工作。 – 2014-11-21 11:48:39
你会打这个错误
Cannot assign a default value to a local variable
in cas如果您正在运行SQL Server 2005或更早版本,并且您尝试声明一个变量并在一个语句中为其赋值。
喜欢的东西 -
DECLARE @Var Varchar(15) = 'Test'
Message 139, Level 15, State 1, Line 0
Cannot assign a default value to a local variable
变量声明得到了增强,在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'
它不是在'SQL SERVER 2005'可能的。它支持SQL SEVER 2008和以上版本 – 2014-11-21 11:50:56
在您的文档链接中,使用顶部的* Other Versions *下拉菜单选择* SQL 2005 *以获取正确的语法。 – 2014-11-21 11:51:38