【发布时间】:2014-01-23 21:43:14
【问题描述】:
我有存储过程,里面有一个事务。
当我用 SQL Server management studio 执行它时没有错误,但是当我用我的 C# 代码执行它时,会出现以下错误:
ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION
代码是:
CREATE PROCEDURE [dbo].[AddHardDisk]
@name nvarchar(50), @brand nvarchar(50), @serial nvarchar(50), @cost float, @seller nvarchar(50),@note nvarchar(1000),@buyDate Date,
@size int ,@moneyType nvarchar(50)
AS
DECLARE @addedDeviceID int
BEGIN TRY
BEGIN TRAN
insert into Product(Name,Brand,Serial,Cost,Seller,Note,MoneyType,BuyDate)
values(@name,@brand,@serial,@cost,@seller,@note,@moneyType,@buyDate)
select @addedDeviceID =SCOPE_IDENTITY()
insert into HardDisk(ID,size)
values(@addedDeviceID,@size)
exec DecreaseMoneyFromFund @moneyType,@cost
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
【问题讨论】:
-
您能否发布调用此存储过程的 C# 代码的相关部分?还有 DecreaseMoneyFromFund 程序在做什么?
-
能把
DecreaseMoneyFromFund的源码公布一下吗? -
问题出在 SQL 中,而不是在 C#中
标签: c# tsql transactions