首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

调用存储过程的有关问题

2012-02-07 
调用存储过程的问题PB调用Sql Server2000中的存储过程,如果存储过程中不加事务控制(CREATE PROCEDURE Sp_a

调用存储过程的问题
PB调用Sql Server2000中的存储过程,如果存储过程中不加事务控制(CREATE PROCEDURE Sp_addproduct
@productid varchar(30),
@producttypecode varchar(20),
@productname varchar(50),
@product_jcname varchar(50),
@standard varchar(20),
@unit varchar(10),
@if_used bit
 AS
If Not Exists(Select * From bs_productinfo where productcode = @productid)
Begin
Insert Into bs_productinfo(productcode,producttypecode,productname,product_jcname,standard,unit,if_used)
Values(@productid,@producttypecode,@productname,@product_jcname,@standard,@unit,@if_used);
Insert into bs_productstore (productcode,CurrentNum,summoney)
Values (@productid,0,0)

End
Else
Begin
Update bs_productinfo Set Producttypecode = @producttypecode,
productname = @productname,
product_jcname = @product_jcname,
standard = @standard,
unit = @unit,
if_used = @if_used where productcode = @productid;
End)在程序中调用的时候都很正常,但是如果在存储过程中加了事务管理(CREATE PROCEDURE Sp_addproduct
@productid varchar(30),
@producttypecode varchar(20),
@productname varchar(50),
@product_jcname varchar(50),
@standard varchar(20),
@unit varchar(10),
@if_used bit
 AS
If Not Exists(Select * From bs_productinfo where productcode = @productid)
Begin
Begin Tran
Insert Into bs_productinfo(productcode,producttypecode,productname,product_jcname,standard,unit,if_used)
Values(@productid,@producttypecode,@productname,@product_jcname,@standard,@unit,@if_used);
Insert into bs_productstore (productcode,CurrentNum,summoney)
Values (@productid,0,0)

End
Else
Begin
Update bs_productinfo Set Producttypecode = @producttypecode,
productname = @productname,
product_jcname = @product_jcname,
standard = @standard,
unit = @unit,
if_used = @if_used where productcode = @productid;
End
If @@trancount > 0
Begin
Rollback Tran
End
Else
Commit Tran
GO
)在程序调用的时候就会弹出【commit transaction 请求没有对应的Begin transaction】

[解决办法]

SQL code
If @@trancount > 0 Begin Rollback Tran End Else Commit Tran
[解决办法]
你把存储过程里
If @@trancount > 0 
Begin 
Rollback Tran 
End 
Else 
Commit Tran 
注释掉就行了

热点排行