create proc pro_getprotrans@goodsid
int,
@number
int,
@stockprice money,
@supplierid
int,
@empid
int,
@stockunit varchar(
50),
@stockdate datetime,
@totalmoney money ,
@actmoney money ,
@baseid
int,
@description nvarchar(
255)
asdeclare @error
int =0 --事務中操作的錯誤記錄
--開啟事務
begin transaction
--實現進貨資訊的新增
insert into stockinfo values(@goodsid, @number, @stockprice, @supplierid, @empid, @stockunit, @stockdate, @totalmoney, @actmoney,default,@description, @baseid)
set @error+=@@error --記錄有可能產生的錯誤號
--獲取當前進貨資訊的標識列
--判斷當前商品有沒有進貨記錄
if exists (select * from dbo.inventoryinfo where goodid=@goodsid) --說明記錄存在,直接修改庫存數量
begin
update dbo.inventoryinfo
set gnumber=gnumber+@number,totalmoney+=@totalmoney where goodid=@goodsid
set @error+=@@error --記錄有可能產生的錯誤號
end
else --這個商品從來沒有過進貨記錄,那麼就應該新增新的存在資訊
begin
declare @gwarningnum
int --此商品的預警數量
--獲取預警數量
set @gwarningnum=(select waringnum from dbo.goodsinfo where gid=@goodsid)
insert into dbo.inventoryinfo values(@goodsid,@number,@baseid,@gwarningnum,@totalmoney,
'第一次進貨
',default
)
set @error+=@@error --記錄有可能產生的錯誤號
end--判斷事務的提交或者回滾
if(@error<>0
) begin
rollback transaction
return -1 --設定操作結果錯誤標識
endelse
begin
commit transaction
return
1 --操作成功的標識
endgo
SQL SERVER儲存過程中使用事務
儲存過程格式 create procedure yourprocedure asbegin set nocount on begin try 開始捕捉異常 bein tran 開始事務 update a set a.names b.names from t1 as a inner join t2 a...
在SQL Server儲存過程中使用事務及返回值
1 create procedure testtran23 as45declare userid int6 7set nocount on8 9begin tran adduser 1011 insert into testtable username,password,email values m...
儲存過程中使用隔離級別
set transaction isolation level 控制由連線發出的所有 microsoft sql server select 語句的預設事務鎖定行為。語法 set transaction isolation level 引數 read committed 指定在讀取資料時控制共享鎖以...