-- 秒殺執行儲存過程
delete $$ -- console的結束符號由;轉換成 $$
-- in輸入引數;out:輸出引數
-- row_count():返回上條dml影響的條數: 小於0:sql語句錯誤/未執行修改sql操作
-- 儲存過程執行秒殺過程
delimiter $$
create procedure kill.execute_seckill -- 在kill資料庫中建立名稱為execute_seckill的儲存過程
(in v_seckill_id bigint, in v_phone bigint, in v_kill_time timestamp, out r_result int)
begin
declare insert_count int;
set insert_count = 0;
start transaction;
insert ignore into success_killed (seckill_id, user_phone,create_time)
values (v_seckill_id,v_phone,v_kill_time);
select row_count() into insert_count;
if(insert_count = 0) then
rollback;
set r_result = -1;
elseif (insert_count < 0) then
rollback;
set r_result = -2;
else
update seckill set number = number - 1
where seckill_id = v_seckill_id
and end_time > v_kill_time
and start_time < v_kill_time
and number > 0;
select row_count() into insert_count;
if (insert_count = 0) then
rollback;
set r_result = 0;
elseif (insert_count < 0) then
rollback;
set r_result = -2;
else
commit;
set r_result = 1;
end if;
end if;
end;
$$-- 儲存過程定義結束
-- 刪除儲存過程
drop procedure execute_seckill
delimiter ; -- console的結束符號由$$轉換成;
set @r_result = -3; -- 在console中定義變數需要使用@
-- console 中執行儲存過程
call execute_seckill(1001, 15665662547,now(),@r_result);
-- 獲取結果mysql語法
select @r_result;
show create procedure execute_seckill -- 查詢儲存過程
關於使用儲存過程建立分頁
今天查詢有關sql server 索引的資料 無意在一篇文章的末尾發現乙個關於使用儲存過程建立分頁的 直接複製到查詢分析器裡有誤,整理除錯了乙個,搬上來一起學習一下。注 原作者 freedk 以下為筆者整理 這是乙個相對最優的方法在大量資料集中表現突出 建立乙個 web 應用,分頁瀏覽功能必不可少。...
建立儲存過程
execute pro book 當你執行該儲存過程時,所有包括在其中的sql語句都會執行,在上面的例子中,會返回所有在forum表中的記錄。當在批處理中的第乙個語句是呼叫儲存過程時,你並不需要使用execute語句。你可以簡單地提供儲存過程的名稱來執行儲存過程。比如在isql w中,可以象下面所示...
建立儲存過程
create procedure dbo procgetdata days int asbegin set nocount on added to prevent extra result sets from interfering with select statements.set nocoun...