私は SQL に非常に慣れていないので、私の質問が些細なものであるか、または私の仕事をしていないように見える場合は、最初に謝罪させてください。私はこれらの概念の多くを把握する方法を学ぼうとしています.
とにかく、私は最終的に多くのパラメーターを取る複雑なクエリを書いています。これらのパラメーターには、カンマ区切りの文字列を使用して複数の変数を許可します。(以前にこの問題を解決しましたが、SP_ExecuteSQL
.
そうは言っても、これがクエリの骨子です。
DECLARE @system_status varchar(30)
SELECT @system_status = '12,14'
DECLARE @sql nvarchar(4000)
SELECT @sql = 'SELECT [system_status]
FROM VW_Document_Main
WHERE 1=1 '
IF @System_Status = '-1'
Begin
SELECT @sql = @sql + 'and system_status <> 20'
End
ELSE IF @system_status IS NOT NULL AND @system_status NOT IN ('-1','0')
Begin
SELECT @sql = @sql + 'and ' + @system_Status + ' LIKE ''%,'' + system_Status + '',%'''
sp_executesql ステートメントにビルドしない場合でも、使用可能なクエリを作成することはできますが、このクエリについてビルドするので、これらの手順を実行する必要があります...非生成を生成する理由についての考えブールエラー?
編集:それが正しい方向へのステップであるかどうかはわかりませんが、最終的な SELECT ステートメントを読み直した後:
SELECT @sql = @sql + 'and '',''' + @system_Status + '',''' LIKE ''%,' + 'system_Status' + ',%'''
別のエラーが返されます。変数に値を代入する SELECT ステートメントは、データ取得操作と組み合わせてはなりません。
エラーが次のように表示されることに注意してください。