次のコードに簡略化されたストアド プロシージャがあります。
SET NOCOUNT ON
DECLARE @count INT
DECLARE @temp TABLE
INSERT INTO @temp
SELECT @count = count(*) FROM @temp
DECLARE [cursor] FOR SELECT id FROM @temp
OPEN [cursor] FETCH NEXT FROM [cursor] INTO @id WHILE @@fetch_status = 0
BEGIN
exec anoterStoredProc @id
FETCH NEXT FROM [cursor] INTO @id
END
CLOSE [cursor]
DEALLOCATE [cursor]
SET NOCOUNT OFF
RETURN @count
それでもExecuteNonQuery()-1 を返します。
使用できますがselect @count、ExecuteScalar()コードが機能しない理由を理解したいです。
サーバーの動作をNOCOUNT OFFリセットせず、NOCOUNT ONまだそのままのようです。