1

私の質問を参照して、私はこのselectステートメントを試していますが、エラーが発生しています

Select * From    
(SELECT * FROM  FruitCrate WHERE FruitName IN (' +@FruitNames+ '))

WHERE FruitCrate.Eatable= 1

エラー

キーワード「WHERE」付近の構文が正しくありません。

編集

USE [DataBaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[SPName]
(
    @FruitNames
)
AS

exec('SELECT  *  
    FROM FruitCrate
    WHERE FruitName IN (' +@FruitNames+ ')
    and Eatable = 1')
4

4 に答える 4

2

コンマ区切りの文字列をin演算子に渡すことはできません。条件に使用する場合、必要なクエリは 1 つだけです and

exec('SELECT * 
      FROM FruitCrate 
      WHERE FruitName IN (' +@FruitNames+ ')
      and FruitCrate.Eatable= 1'

使用しなければならない動的クエリを実行したい場合(ここではそうです) exec

于 2013-09-09T10:27:26.350 に答える
0

なんで使わないの

SELECT * FROM  FruitCrate WHERE FruitName IN (' +@FruitNames+ ')
WHERE FruitCrate.Eatable= 1

おそらく、サブクエリを使用すると、サブクエリ名が指定されていないため、SQL エンジンがFruitCratelast を認識しません。WHERE

あなたのIN条項も悪用される可能性があります!

于 2013-09-09T10:38:46.850 に答える