0

私の質問は基本的なものです。

私はストアドプロシージャを作成しており、次の変数を持っています:

@ConcatenarClausulaWhere

プロシージャの実行中、いくつかの条件がこの変数に連結され、WHERE の後に挿入されます。

SELECT ID
FROM TABLE1
WHERE indStatus = 'True'
AND (Description LIKE '%' + @ STRING + '%')

私の意図は次のようなことをすることでした:

SELECT ID
FROM TABLE1 The
WHERE indStatus = 'True'
AND (Description LIKE '%' + @ STRING + '%') + @ ConcatenarClausulaWhere

しかし、それは不可能です。なんで?

SQL Server 2008 を使用しています

4

1 に答える 1

3

WHEREクエリに句を追加するには、動的 SQL が必要です。SELECTステートメントは単なる文字列ではありません。ここでは、SQL インジェクションにも十分に注意する必要があります。この where 句のパラメーターに入力しているユーザーをどのように検証していますか?

DECLARE @sql NVARCHAR(MAX) = N'SELECT ID FROM dbo.TABLE1 
  WHERE indStatus = ''True'' AND (Description LIKE @String)'
  + @ConcatenarClausulaWhere;

EXEC sp_executesql @sql, N'@String NVARCHAR(MAX)', N'%' + @STRING + '%';
于 2013-04-18T18:04:38.143 に答える