ストアド プロシージャを使用して .NET で TableAdapter を作成しようとしていますが、「キーワード 'WHERE' 付近の構文が正しくありません」というエラーが表示されます。
ストアド プロシージャの問題を次の行に絞り込みました。
IF @NumRows > 0
SET @SQL += N' WHERE T1.RowNumber BETWEEN 1 and 10'
ELSE
SET @SQL += N' WHERE T1.RowNumber > 0'
@NumRows
は、デフォルトで 0 に設定される入力パラメーターです。
ただし、これらの行のいずれかを削除すると、すべてが正常に機能します (IF/ELSE ステートメントがない場合、両方の WHERE 句は単独で正常に機能します)。.NET が IF/ELSE を無視し、WHERE 句を 2 回追加しようとしているように見えます。
次のように変更しても問題なく動作します。
IF @NumRows > 0
SET @SQL += N''
ELSE
SET @SQL += N' WHERE T1.RowNumber > 0'
WHERE 句の 1 つが削除され、.NET 側で競合がなくなりました。したがって、それは 2 つの WHERE 句に関係していて、他には関係していないと確信しています。
sproc は SQL Server で完全に正常に動作し、[データのプレビュー] をクリックすると、エラーにもかかわらず .NET でも動作します。唯一の問題は、レポートの作成に必要なフィールドのリストが自動入力されないことです。
誰もこれを前に見たことがあり、提案がありますか?