0

谁能告诉我为什么这不起作用?

DECLARE
  @ItemList         VARCHAR(max);

IF EXISTS
    (SELECT IM_Data INTO ItemList
      FROM IM_DataTable
      WHERE xRowNum<=1)

错误:

查找错误 - SQL Server 数据库错误:关键字“INTO”附近的语法不正确。

4

4 回答 4

5

好的,首先,您需要确保查询的结果只有一行,所以我认为不需要WHERE xRowNum<=1,您应该使用xRowNum=1

DECLARE @ItemList VARCHAR(max);

SELECT @ItemList = IM_Data
FROM IM_DataTable
WHERE xRowNum = 1
于 2013-04-16T14:01:21.970 回答
1

我认为它期望 ItemList 是一个表——你 SELECT INTO 一个表,而不是一个变量。

SQL Server 中的语法是:

SELECT 
   ItemList = IM_Data
FROM 
   IM_DataTable
WHERE
   xRowNum<=1

我不确定 IF EXISTS 如何适应这一点。您只想在数据存在时设置变量吗?

于 2013-04-16T13:58:49.730 回答
0

您已经省略了需要位于变量名称开头的 @ 符号。此外,您似乎正在将检查存在的语法和将数据检索到变量中的语法混合在一起。您是否只想检查 IN_DataTable 中是否存在某行或某行?如果是这样,请省略“INTO @ItemList”,以便您拥有以下内容:

IF EXISTS 
    (SELECT IM_Data
     FROM IN_DataTable
     WHERE xRowNum <= 1)
...

如果您需要检索 IM_Data 并稍后使用它,您应该执行以下操作:

DECLARE @ItemList VARCHAR(max);
SELECT @ItemList = IM_Data 
FROM IM_DataTable
WHERE xRowNum<=1;
...
于 2013-04-16T14:23:05.950 回答
0

为什么这不起作用?

好吧,您拥有的子查询是:

SELECT IM_Data
INTO ItemList
FROM IM_DataTable
WHERE xRowNum<=1

ItemList这是在当前数据库中创建名为 的表的完全有效的语法。但是,语句中不允许使用此语法if

因此,您可以将其表述为:

SELECT IM_Data
INTO ItemList
FROM IM_DataTable
WHERE xRowNum<=1

if exists (select * from itemlist)

或者您可以完全省去额外的表格:

if exists (select * from IM_DataTable WHERE xRowNum<=1)

或者,您可能完全有其他意图。

于 2013-04-16T14:24:46.457 回答