delimiter //
create procedure payFees(in deviceid int, in fee int)
begin
declare pbalance int default null;
declare ptype varchar(2) default "";
declare total int;
select balance, type into pbalance, ptype from device d where d.deviceid = deviceid;
if pbalance is null
then
select "cannot found the device" as result;
else
/* declare rate1 float;
declare rate2 float;
declare damage1 float;
declare damage2 float;
select rate1, rate2, damage1, damage2 into rate1, rate2, damage1, damage2 from charge_table ct where ct.type = ptype; */
set total = pbalance + fee;
update device d set balance = total where d.deviceid = deviceid;
declare pfee int default null;
declare pdate varchar(6) default null;
declare curl cursor for select basicfee, yearmonth from meter_record m, electricity_bill e where m.id = e.eid and m.deviceid = deviceid and flag = 0;
declare continue handler for not found set pfee = null;
open curl;
fetch curl into pfee, pdate;
while(pfee is not null) do
declare overyear bool;
if year(pdate) = year(now()) or (year(pdate) + 1 = year(now()) and month(pdate) = "12"):
then
set overyear = false;
else
set overyear = true;
end if;
select overyear;
fetch curl into payfee, pdate;
end while;
close curl;
end if;
end;
//
您不能将您的声明放在其他语句之后。
https://dev.mysql.com/doc/refman/5.7/en/declare.html说:
DECLARE只允许在BEGIN...END复合语句中使用,并且必须在它的开始处,在任何其他语句之前。
您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行“password”附近使用正确的语法
问题内容: 我有这样的存储过程: 但是它给出了错误: -您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第3行的’‘附近使用正确的语法 错误是什么意思?第2行有什么问题? 问题答案: 在使用触发器,存储过程等之前,必须先更改定界符。
我试图运行查询,但我不能得到正确的输出,我得到了这个错误,我尝试了一些stackoverflow(如。但我无法解决。 --错误-- 这是发生错误的主要代码
问题内容: 使用 Hibernate 4.1 和 MySQL 5 将 Folder实体保存到数据库时,出现以下错误。我没有其他实体的任何问题。 这是我的文件夹表: 我的文件夹实体: Hibernate生成的insert语句: hibernate设置: 完整的堆栈跟踪: 问题答案: 好,我找到了解决方案;我们仍然可以像这样使用’ order ‘关键字作为列名: 感谢 Ghost 和 Dave New
我有以下查询和错误: 错误消息: