書寫乙個儲存過程

2021-07-30 03:50:55 字數 1508 閱讀 8927

delimiter $$  -- console ; 轉換為 $$

-- 定義儲存過程

-- 引數:in輸入引數;out輸出引數

-- row_count():返回上一條修改型別sql(delete,insert,update)的影響條數

-- row_count():0:未修改資料;<0:表示sql出錯;>0:表示修改了行數

create procedure `seckill`.`test`

(in v_seckill_id bigint(20),in v_user_phone varchar(20),

in v_create_time timestamp,out r_result int)

begin 

declare sql_count int default 0;

start transaction;   -- 開啟事物

insert ignore into success_killed(seckill_id,user_phone,create_time)

value(v_seckill_id,v_user_phone,v_create_time);

select row_count() into sql_count;

if ( sql_count = 0 ) then 

rollback;

-- 回滾

set r_result=-1;

elseif(sql_count<0) then

rollback;

set r_result=-2;

else

update seckill set number=number-1 where

seckill_id=v_seckill_id and 

start_time <= v_create_time and

end_time >=v_create_time and number>0;

select row_count() into sql_count;

if ( sql_count=0 ) then 

rollback;

set r_result=0;

elseif(sql_count<0) then

rollback;

set r_result=-2;

else 

commit;  --提交

set r_result=1;

end if;

end if;

end;

$$delimiter ;

set @r_result=-3;

call  `seckill`.`test`(2,'123456789',now(),@r_result);

select @r_result;

可以減少,sql伺服器與後台伺服器互動的網路延遲,減少gc影響,降低行級鎖持有時間。

使用mybatis進行呼叫

call  `seckill`.`test`(

#,#,

#,#);

乙個儲存過程

create or replace package abc zys is procedure daily census end abc zys 建乙個包,包中有儲存過程daily census。不涉及任何引數。create or replace package body abc zys is pro...

乙個儲存過程

首先是建立儲存過程.drop procedure if exists externalcalltocomplete delimiter create procedure externalcalltocomplete begin drop table if exists temp1 create ta...

乙個分頁儲存過程

page language c import namespace system.data import namespace system.data.sqlclient 訂單號 服務專案 預訂日期 操作人員 分配狀態 databinder.eval container.dataitem,offerid...