【发布时间】:2015-07-17 19:39:42
【问题描述】:
我试图创建一个sqlfiddle
DECLARE @binsize INT = 5;
select 5;
select @binsize; <-- this fail.
select 6;
得到了这个错误。
必须声明标量变量“@binsize”。
我找到了这样的示例,并且在 sql server 中可以正常工作。
USE AdventureWorks2012;
GO
DECLARE @find varchar(30);
/* Also allowed:
DECLARE @find varchar(30) = 'Man%';
*/
SET @find = 'Man%';
SELECT p.LastName, p.FirstName, ph.PhoneNumber
FROM Person.Person AS p
JOIN Person.PersonPhone AS ph ON p.BusinessEntityID = ph.BusinessEntityID
WHERE LastName LIKE @find;
解决
使用 GO 更改可以解决问题。但仍然打开其他问题。
DECLARE @binsize INT = 5;
select @binsize + 2 ;
select @binsize + 5 ;
GO
只返回 7
【问题讨论】:
-
去掉分号。
-
请注意,在支持方言中应尽可能使用分号,但是是的,在这种情况下,这是(有问题的)解决方案。不过,我不建议在 T-SQL 中忽略它们,因为 (A) 这只是很好的 ANSI,并且 (B) MS 有记录表明它们可能在未来的版本中成为强制性的。不太可能,但值得尽早开始......
-
或在查询下方的第四个组合框中选择“go”作为查询终止符
-
使用
GO作为查询终止符比删除分号更好。 -
@AaronBertrand,你说得对,是重复的,但那里的解决方案不起作用。您可以检查所选解决方案的fiddle 甚至没有编译。
标签: sql-server sql-server-2014 sqlfiddle