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

わかりました。まず、クエリの結果が 1 行だけであることを確認する必要があり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 に答える