executescalar()
問題のコンテキスト: VisualStudio 2008 と型指定されたデータセットを使用します。これにより、実行スカラーへの「簡単な」アクセスが提供され、最初の recorsetの最初の行の最初のフィールドの値が返されます(この最後の部分はしばしば省略されます) 。
この動作の問題は、ほとんどの場合、最終ステートメントで返される値を計算する前に、他の要求を行いたいことです。select @returnValue
したがって、私の質問は、一般的に、SP が中間レコードセットを返さないようにするにはどうすればよいですか? (SET FMTONLY ON/OFF を試しましたが、望ましくない動作をしています)
もう 1 つの関連する質問は、T-SQL UPDATE ステートメントが更新された行を返さないようにするにはどうすればよいかということです。UPDATE を使用して単純に UPDATE ...
ありがとう!
サンプル:
始める
SET NOCOUNT ON;
declare @c int
select @c=(select count(*) from work where ...)
select @c -- so ExecuteScalar() works
update sousblocs set myfield = @c
where ...
select @c --after the update, won't be seen by ExecuteScalar()
return @c --useless for ExecuteScalar
終わり
これは私の問題であり、最初の「select @c」で解決できます。それでも、recorsetの出力を無効にできるかどうかは疑問です....