Это хранимая процедура, на которой уже запущен sql server 2005 со своим собственным синтаксисом, и здесь я написал это в синтаксисе mysql. Все в порядке, но в операторе последнего конца отображается ошибка.
DELIMITER $$
CREATE DEFINER = root
@ localhost
PROCEDURE sp_PREPAREACCOUNTREPORTSBEGIN
(IN fdate1
DATE, IN tdate1
ДАТА, В GrossProfit
ДВОЙНОЙ, В NetProfit
ДВОЙНОЙ, В OpeningStock
ДВОЙНОЙ, В ClosingStock
ДВОЙНОЙ, В DiffInBalance
ДВОЙНОЙ, В dc
VARCHAR (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;
Конец $$ DELIMITER;