5

我正在尝试执行下一条 SQL 语句(SQL Server 2008 Profile)

DECLARE @fun int;
SET @fun = 40;

select cast(@fun as varchar(10)) + 'hello'

和 SQLFiddle 给了我错误:Must declare the scalar variable @fun

我哪里错了?

在此处输入图像描述

http://sqlfiddle.com/#!3/d41d8/42156

4

3 回答 3

9

您需要从最后一个下拉菜单中选择 [Go]。

于 2015-01-07T18:52:13.313 回答
3

我认为分号在这里引入了问题。

如这里所述:http ://www.sql-server-helper.com/error-messages/msg-137.aspx和这里:SQL Server - 变量声明但仍然说“必须声明标量变量”,问题出现在这些语句是单独执行的,而不是作为一个“单元”执行,而分号似乎会触发它。

当我从您的语句中删除分号时,它可以工作:http ://sqlfiddle.com/#!3/d41d8/42159

于 2015-01-07T18:46:14.193 回答
0

您不必删除分号,重要的部分是在右下角下拉菜单中选择 [GO] 作为查询终止符。

小提琴演示

DECLARE @fun int;
SET @fun = 40;
select @fun;
GO

select 10;
GO

select @fun + 10;

前三个句子作为一个整体执行,因为现在;没有结束查询。所以@fun 在那个范围内是可见的。

第二块注意你需要在 GO 之后留一个空间。

第三块不起作用,因为 @fun 未在此块中定义。

于 2015-07-17T21:37:54.470 回答