はその@totalresultが正しくインクリメントされますが、プロシージャ2で返される値は0 がどのように右のそれを得るためです。次の例でSQL Server 2008の、ネストされた手順の問題
Procedure1
..........
IF(@errorcode<>0) ROLLBACK TRANSACTION
ELSE COMMIT TRANSACTION
SELECT @errorcode
Procedure2
..........
WHILE [condition] BEGIN
EXEC @proc1result = Procedure1 [parameters]
IF(@proc1result=0) SET @[email protected]+1
END
SELECT @totalresult
問題を考慮するとされて?
私はSQL Server 2008とEntity Framework 4を使用しています。 プロシージャ1はうまくいきます。
プロシージャ1ロールバックからのトランザクションが「INSERT-EXECステートメント内でROLLBACKステートメントを使用できません。例外は、すべてがうまくいく場合、正しい結果を得るたびにProcedure1がコミットします。 – gigi
@gigi:私の答えを見れば、私の推薦が見えます。ストアドプロシージャの場合、エラーコードを返すためには 'RETURN @ something'を使用する必要があり、レコードセットを返すにはSELECT something ...を使用する必要があります。 –