这是一个已经用自己的语法运行SQLServer2005的存储过程,我在这里用mysql语法编写了这个存储过程。一切正常,但最后一个结束语句显示错误。
定界符$$
创建定义者=root
@localhost
程序sp_PREPAREACCOUNTREPORTSBEGIN
(在fdate1
DATE,在tdate1
DATE,在grossrofit
DOUBLE,在OpeningStock
DOUBLE,在ClosingStock
DOUBLE,在diffalance
DOUBLE,在
dcVARCHAR(25)开始)
Create temporary table if not exists Trading
(Ac_code bigint, AcName varchar(255),Amount float,DC varchar(20),seq int) ENGINE=MEMORY;
insert into Trading SELECT ledger_master.Ac_code, ledger_master.Ac_name,
(select case tmp_closingbalance.Dr when 0 then tmp_closingbalance.Cr else tmp_closingbalance.Dr end), (select case tmp_closingbalance.Dr when 0 then 'cr' else 'dr' end),sequence
FROM ledger_master INNER JOIN tmp_closingbalance ON ledger_master.Ac_code = tmp_closingbalance.ac_code INNER JOIN accountgroup ON ledger_master.Group_code = accountgroup.Group_code
where accountgroup.position='t' order by sequence;
set @GrossProfit := 0;
set @GrossProfit := (select ifnull(sum(Amount),0) from Trading where DC='dr') - (select ifnull(sum(Amount),0) from Trading where DC='cr');
if(@GrossProfit >0)
THEN
insert into Trading values(0,'GROSS PROFIT', (@GrossProfit),'cr',9999 );
else if(@GrossProfit <0)
then
insert into Trading values(0,'GROSS PROFIT', -(@GrossProfit),'dr',9999 );
end if;
Create temporary table if not exists PL
(Ac_code bigint,AcName varchar(255),Amount float,DC varchar(20),seq int) ENGINE=MEMORY;
insert into PL
SELECT ledger_master.Ac_code, ledger_master.Ac_name,
(select case tmp_closingbalance.Dr when 0 then tmp_closingbalance.Cr else tmp_closingbalance.Dr end),
(select case tmp_closingbalance.Dr when 0 then 'cr' else 'dr' end),sequence
FROM ledger_master INNER JOIN
tmp_closingbalance ON ledger_master.Ac_code = tmp_closingbalance.ac_code INNER JOIN
accountgroup ON ledger_master.Group_code = accountgroup.Group_code
where accountgroup.position='p' order by sequence;
if (@GrossProfit >0)
then
insert into PL values(0,'BY GROSS PROFIT', (@GrossProfit),'dr',9999 );
else if (@GrossProfit <0)
then
insert into PL values(0,' BY GROSS PROFIT', -(@GrossProfit),'cr',9999 );
end if;
set @NetProfit := 0;
set @NetProfit := (select ifnull(sum(Amount),0) from PL where DC='dr') - (select ifnull(sum(Amount),0) from PL where DC='cr');
if(@NetProfit >0)
then
insert into PL values(0,'TO NET PROFIT', (@NetProfit),'cr',9999 );
else if(@NetProfit <0)
then
insert into PL values(0,'TO NET PROFIT', -(@NetProfit),'dr',9999 );
end if;
Create temporary table if not exists Balancesheet
(Ac_code bigint,AcName varchar(255),Amount float,DC varchar(20),seq int) ENGINE=MEMORY;
insert into Balancesheet
SELECT ledger_master.Ac_code,ledger_master.Ac_name,
(select case tmp_closingbalance.Dr when 0 then tmp_closingbalance.Cr else tmp_closingbalance.Dr end), (select case tmp_closingbalance.Dr when 0 then 'cr' else 'dr' end),sequence
FROM ledger_master INNER JOIN tmp_closingbalance ON ledger_master.Ac_code = tmp_closingbalance.ac_code INNER JOIN accountgroup ON ledger_master.Group_code = accountgroup.Group_code
where accountgroup.position='b' order by sequence;
insert into Balancesheet values(0,'PROFIT & LOSS A/C',-(@NetProfit),'cr',9999);
set @DiffInBalance := 0;
select @DiffInBalance := ((select ifnull(sum(Amount),0) from Balancesheet where DC='dr') - ( select ifnull(sum(Amount),0) from Balancesheet where DC='cr'));
delete from tmp_prepareaccountreports;
insert into tmp_prepareaccountreports select Ac_code,AcName,Amount,DC,seq,1 as types from Trading order by types,seq;
insert into tmp_prepareaccountreports select Ac_code,AcName,Amount,DC,seq,2 as types from PL order by types,seq;
insert into tmp_prepareaccountreports select Ac_code,AcName,Amount,DC,seq,3 as types from Balancesheet order by types,seq;
结束$$分隔符;
如果没有,请查看https://dev.mysql.com/doc/refman/8.0/en/if.html
当我导入数据库时,我在PHPMyadmin中遇到了一些问题。 您的SQL语法有错误;检查与您的MySQL server版本相对应的手册,以了解在第3行“”附近使用的正确语法(`form_id`varchar(18)COLLATE utf8_general_ci;NOT NULL DEFAULT“,) 有人知道我该怎么解决吗?
问题内容: 我有这样的存储过程: 但是它给出了错误: -您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第3行的’‘附近使用正确的语法 错误是什么意思?第2行有什么问题? 问题答案: 在使用触发器,存储过程等之前,必须先更改定界符。
语法中有错误;查看与服务器版本相对应的手册,以了解第1行附近使用的正确语法 当我试图为我的帐单应用程序生成帐单时,上面的错误将会出现。下面是我的应用程序的代码。请给我一些解决这个错误的方法..................
我得到了这个错误,我不知道为什么我在workbench上尝试了这个语句,它起作用了。我也在寻找改进我的日期减法代码,基本上,我从表中得到deadline并从今天的日期中减去。
问题内容: 我正在使用Python并使用MySQLdb模块。我的连接正常(我可以成功运行其他查询) 我收到以下错误: 我以前也遇到过类似的麻烦;MySQLdb的语法错误消息 非常 难以描述。 如何解决? 问题答案: 我相信是保留的。在子句中使用 如果对它放回去,您也许可以摆脱使用它的困扰,但是我认为将名称更改为非保留字会更好。
嘿,我正在使用下面的代码创建一个名为user的表,其中包含一些外键 我认为这段代码是正确的,但它仍然会产生以下错误 这个代码真的正确吗?如果没有,我如何修复它?此代码的正确变体是什么?感谢您的帮助。 编辑:我正在phpmyadmin上测试此代码 问候。