2011-08-03 7 views
0

ストアドプロシージャ(SQL Server 2008)を呼び出す.NETアプリケーションがあります。 SPへの呼び出しがエラーメッセージストアドプロシージャがASPを実行していません.NEt

「サブクエリが サブクエリが続く場合は、この許可されていない。1つの以上の値を返し=、!=、<、< =、>、> =またはで失敗していますサブクエリは式として として使用されます。

ただし、上記と同じパラメータでSQL Server 2008クライアントからSPを手動で実行すると問題はありません。

誰でもこの問題を解決する手助けはできますか?

セキュリティ上の理由から、ここに私のSPを掲載することはできません。

+2

回答が必要な場合は、procを変更して、ここに投稿してください。 –

+1

なし** **あなたがやっていることは、実際に助けてくれる方法はありません...この問題を示している最小限のバージョンに保存されたprocを減らしてみてください... –

答えて

0

ストアドプロシージャが値を返した場合、この値を取得するには プロシージャの最初の文字列にSET NOCOUNT ONを使用する必要があります。

EDIT:申し訳ありません私は質問を理解していませんでした。答えは間違っています。

+0

こんにちは、それすでにSET NOCOUNTがONになっています。はい、私はSPの戻り値をキャプチャしています。その他の提案 –

+0

私はコードを見る必要があると思います... –

0

問題のような音が記載されていますhere

ストアドプロシージャによって変更されているテーブルにトリガを設定することができます。このトリガは、変更されるレコードが1つだけであると想定されるようにコーディングされています。

おそらくあなたは、のようなものがあります:あなたの更新は複数のレコードを変更する場合、この文はあなたのエラーメッセージで失敗します

declare @XYZ int 
select @XYZ = FieldA from inserted 

を。

SP自体が環境値をチェックしない限り、SSMSでの実行がASP.NETに比べて失敗しない理由はありません。現在のユーザをsuser_sname()関数から削除することができます。したがって、これらの値のために変更を加えず、したがってトリガを起動することはできません。

トリガーがない場合は、上記のサンプルクエリの例を探して、複数の値を返すことができないことを再確認します。