2017-07-25 51 views
1

我希望能够通过选择它并按F5运行我的SQL查询片段。问题是,如果该选择包含变量名称,则会出现错误:Must declare the scalar variable "@variableName".。无论如何要解决这个问题吗?我想variableName是其价值,否则将有我运行在那个时刻,我已经选择了整个语句...如何运行包含变量的选定SQL查询?

样品的全码:

DECLARE @cat INT; 

SET @cat = 2; 

SELECT * FROM TableName 
WHERE ColumnName = @cat; 

我选择的样品我想运行时不包括声明/设置线:

SELECT * FROM TableName 
WHERE ColumnName = @cat; 

可能不可能,但我觉得它值得一试。

P.S.我是一个SQL noobie,所以如果我失去了一些明显的东西让我知道!

+0

发布查询..当在查询中使用变量时,那么'declare'语句应该是执行的一部分,否则你会得到那个错误... –

+0

@Pரதீப்我不能为了保密原因,抱歉。我可以替换名称和东西,但代码很长,这将永远..呃我可以尝试一个例子1秒。 –

+0

只包含在实际查询之前和之后定义/初始化变量的代码。然后F5整个事情在一起。 –

回答

1

我明白你来自哪里。这是一个很长的过程或一些东西的片段,当然你想保留在顶端的声明,我同意这一点。在这种情况下,当您测试时,解决此问题的唯一方法是重新声明它并将其设置在代码片段的顶部。然后,当你运行整批代码时只需注释掉这一行。否则,你必须将代码片段包装在try/catch块中,以便捕捉编译错误,这很棘手。

此外,这通常是我看到人们从someWorkTable中选择*来测试结果的方式。然后它在批处理运行时被注释掉。

0

左键单击表名,右键单击设计,即可查看列名的数据类型。 如果是nvarchar的..

DECLARE @cat INT; 
SET @cat = 2; 
Convert(varchar, @cat) 

SELECT * FROM TableName 
WHERE ColumnName = @cat; 

OR

直接申报

DECLARE @Cat VARCHAR(3) 
SET @cat = '2' 
SELECT * FROM TableName 
WHERE ColumnName = @cat; 

希望这有助于

0

在与别名结果选择查询宣布你可以模拟你的变量。然后,你可以只使用alias.column作为您的加入一部分... ...

SELECT 
     TN.* 
    FROM 
     (select '2' as TmpColumn) tmpAlias 
     JOIN TableName TN 
      on tmpAlias.TmpColumn = TN.ColumnName 

这样,没有“标”变量是必需的,但不是实际的,因为一个简单的参数化查询使用直接WHERE子句。此外,如果您有其他表关系等,或者甚至想要在查询中应用其他“变量”,则可以使用别名.column。