【问题标题】:SQLFiddle: must declare the scalar variable errorSQLFiddle:必须声明标量变量错误
【发布时间】: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

我哪里错了?

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

【问题讨论】:

    标签: sql sqlfiddle


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      如此处所述: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

      【讨论】:

      • 虽然这在这种简单的情况下有效,但它是not exactly a best practice,并且当 OP 使用实际上需要分号的查询构造时会中断。
      【解决方案3】:

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

      FIDDLE DEMO

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

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

      第二块注意,GO后需要留一个空格。

      第三块不起作用,因为 @fun 没有在这个块中定义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-06
        • 2017-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多