關於msyql5 6建立儲存過程的一些記錄

2022-07-23 10:12:09 字數 1642 閱讀 4820

-- 秒殺執行儲存過程

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...