2

ストアド プロシージャを使用して .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 でも動作します。唯一の問題は、レポートの作成に必要なフィールドのリストが自動入力されないことです。

誰もこれを前に見たことがあり、提案がありますか?

4

1 に答える 1

1

エラーは DataSet ( .xsd) ファイル (ビジュアル デザイナー) にあります。右クリックしてAdd > TableAdapterに移動し、データベース接続を設定し、ストアド プロシージャを選択し、クリックして に進むとFinish、エラーが表示されます。それはまだsprocにリンクしており、クリックすると実行できますPreview Dataが、sprocにあるフィールドを把握できません。もちろん、手動でフィールドを追加することもできますが、それはあってはならないばかげた問題のように思えます。

于 2012-08-27T17:03:11.807 に答える