锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / 数据库开发开源社区 / mysql存储过程开发常见错误、Workbench开发存储过程示例
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

 

mysql存储过程开发常见错误、Workbench开发存储过程示例


Workbench开发存储过程

Workbench是mysql公司开发的mysql开发客户端,功能强大,兼容性好,使用Workbench开发存储过程的界面如下:

workbench存储过程开发界面

在Apply后,会检查代码,如果有错,下面提示窗口会有红色叉图标行,也会弹出错误窗口,如下:

存储过程错误

上面提示You have an error in your SQL syntax,near',单引号后是错误的存储过程代码。

mysql存储过程常见错误

存储过程里不支持return,用LEAVE proc_label; -- 跳出存储过程,proc_label是个别名,在begin前起的别名

 Select into2个变量时,不能分开写,不能写成2个into,要into前后带逗号 ,比如

acolume into av,bcolume into bv,这样不对。

改成acolume,bcolume into av,bv,这样可以。

行结束带分号,除非控制语句后,比如then不用带。

字段名前加`,和变量区分开。

赋值语句记的用set开头,不支持象编程语言哪样直接等号赋值。

mysql存储过程示例

CREATE DEFINER=`root`@`localhost` PROCEDURE `TicketMoney`(in dmoney double,IN pcompany varchar(128),in serveruser varchar(32),in num1 varchar(128),in localuser varchar(32),in lastcode varchar(64),out tmstat varchar(32),out dgap double)
tmbegin:BEGIN
DECLARE t_error INTEGER DEFAULT 1;
declare flowid integer;
declare tmrunmny decimal(19,6) default -1;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=-1;

set tmstat='未定义';
set dgap=-1;

select tmstatus,`ticketmoney`.`runmoney` into tmstat,tmrunmny from `ticketmoney` where `ticketmoney`.`company`=pcompany and `ticketmoney`.etermuser=serveruser;
if tmstat='未定义' or tmstat='受限' then
leave tmbegin;
END IF;
start transaction;
insert into tickethis(thtime,etermuser,ticketnum,runmoney,lastmoney,lastlocaluser,company,lastaction)
values(now(),serveruser,num,tmrunmny,dmoney,localuser,pcompany,lastcode);
IF t_error = -1 THEN
begin
set tmstat='his失败';
ROLLBACK;
leave tmbegin;
end;
end if;
select LAST_INSERT_ID() into flowid;
update ticketmoney set `runmoney`=`runmoney`+dmoney,
ticketmoney.ticketnum=num,
ticketmoney.lastmoney=dmoney,
ticketmoney.lastlocaluser=localuser,
ticketmoney.lastaction=lastcode,
ticketmoney.lastflowid=flowid,
lastthtime=now(),
tmstatus=case when `limit`>(runmoney+dmoney) then '可用' else '受限' end
where ticketmoney.company=company and etermuser=serveruser;
IF t_error = -1 THEN
begin
set tmstat='update失败';
ROLLBACK;
leave tmbegin;
end;
end if;
commit;
select tmstatus,`limit`-`runmoney` into tmstat,dgap from ticketmoney where ticketmoney.company=pcompany and etermuser=serveruser;
END
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内