案例:
create procedure sp_insert_graduate_certificate ( in psid varchar(200),
in certificateid int(32),
in number varchar(50),
in userid int(32),
in starttime datetime,
in graduatetime datetime,
in certificatename varchar(50),
in endtime datetime,
in goodsid int(32) ,
out result_cid int(32))
begin
start transaction;
set @scount=(select count(1) from study_manage_graduate_certificate where p_sid=psid);
if @scount<=0 then
insert into study_manage_graduate_certificate(p_sid,certificateid,number,userid,starttime,graduatetime,certificatename,endtime,goodsid)
values(psid,certificateid,number,userid,starttime,graduatetime,certificatename,endtime,goodsid);
end if;
select cid as result_cid from study_manage_graduate_certificate where p_sid=psid;
commit;
end;
注意事項:
1、引數的三種型別
in 只輸入,不輸出
out 只輸出,不輸入
inout 輸出並且輸入
2、mysql的儲存過程不是原子性的(orcale的是)
保證mysql儲存過程的原子性,需要開啟事務,利用事務的原子性,變相的是儲存過程中的事務(start transaction; commit;)所包含的所有命令具有原子性
3、通過call獲取返回值
call sp_insert_graduate_certificate('9940',1,'2',3,now(),now(),'4',now(),10483,@result_cid);
儲存過程 MySQL儲存過程的使用總結
案例所涉及到的表如下 create table t goods g id varchar 20 not null comment 商品編號 g name varchar 30 default null comment 商品名稱 g price float default null comment 商...
mysql儲存過程 MySQL儲存過程
在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...
mysql 儲存過程 mysql 儲存過程
建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...