【发布时间】:2015-01-07 18:38:09
【问题描述】:
我正在尝试执行下一条 SQL 语句(SQL Server 2008 配置文件)
DECLARE @fun int;
SET @fun = 40;
select cast(@fun as varchar(10)) + 'hello'
SQLFiddle 给了我错误:Must declare the scalar variable @fun
我哪里错了?
【问题讨论】:
我正在尝试执行下一条 SQL 语句(SQL Server 2008 配置文件)
DECLARE @fun int;
SET @fun = 40;
select cast(@fun as varchar(10)) + 'hello'
SQLFiddle 给了我错误:Must declare the scalar variable @fun
我哪里错了?
【问题讨论】:
您需要从最后一个下拉菜单中选择 [Go]。
【讨论】:
我认为分号在这里引入了问题。
如此处所述:http://www.sql-server-helper.com/error-messages/msg-137.aspx 和此处:SQL Server - Variable declared but still says "Must declare the scalar variable",当语句单独执行而不是作为“单元”执行时会出现问题,而分号似乎会触发该问题。
当我从您的语句中删除分号时,它会起作用:http://sqlfiddle.com/#!3/d41d8/42159
【讨论】:
您不必删除分号,重要的部分是在右下角下拉菜单中选择 [GO] 作为查询终止符。
DECLARE @fun int;
SET @fun = 40;
select @fun;
GO
select 10;
GO
select @fun + 10;
前三个句子作为一个整体执行,因为现在; 没有结束查询。所以@fun 在那个范围内是可见的。
第二块注意,GO后需要留一个空格。
第三块不起作用,因为 @fun 没有在这个块中定义。
【讨论】: