次のコードに簡略化されたストアド プロシージャがあります。
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
まだそのままのようです。