Должно работать.
PHP код:
static void Job4(Args _args)
{
Connection conn;
Statement Stmt;
ResultSet rslt;
int start_t;
LedgerTrans tblLedgerTrans;
InventTrans tblInventTrans;
//BSL_LockSPAccount tblLocksSP;
Str parseQuery()
{
Str SQLQuery = "EXEC sp_BSL_Account20 ";
//SQLQuery +="'tst','01/02/2003','02/02/2003'";
SQLQuery +="'tst','20030201','20030202'";
return SQLQuery;
}
;
//super();
start_t = timenow();
conn = new UserConnection();
Stmt = conn.createStatement();
ttsBegin;
//select forupdate tblLocksSP;
//tblLocksSP.UserId = CurUserId ( );
//tblLocksSP.insert();
/*Âûçîâ ïðîöåäóðû*/
rslt = Stmt.executeQuery(parseQuery());
while(rslt.next())
{
info(strfmt("%1 %2 %3",rslt.getReal(1),rslt.getString(2),rslt.getString(3)) );
}
//tblLocksSP.delete();
ttsCommit;
Stmt.close();
rslt.close();
info(strfmt("Çàòðà÷åíî âðåìÿ %1 ñ.",timenow()-start_t));
}
PHP код:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER PROCEDURE sp_BSL_Account20
@dataAreaId varchar(255), -- Компания для расчета
@fromDateVarchar varchar(255), -- Дата начала (строка) периода расчета
@toDateVarchar varchar(255) -- Дата конца (строка) периода расчета
AS
set nocount on
set ansi_warnings off
if object_id('BSL_Account20') is not null
DROP TABLE BSL_Account20
SELECT LEDGERTRANS.ACCOUNTNUM,LEDGERTRANS.AMOUNTMST, LEDGERTRANS.TRANSDATE, LEDGERTRANS.VOUCHER,
(SELECT MAX(InventTrans.TransRefId)
FROM InventTrans
WHERE
InventTrans.Voucher = LedgerTrans.Voucher AND InventTrans.DateFinancial = LedgerTrans.TransDate OR
InventTrans.VoucherPhysical = LedgerTrans.Voucher AND InventTrans.DatePhysical = Ledgertrans.TransDate) AS Source
INTO BSL_Account20
FROM LEDGERTRANS
WHERE ((LEDGERTRANS.ACCOUNTNUM = ' 20.110' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.120' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.130' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.210' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.220' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.310' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.320' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.410' OR
LEDGERTRANS.ACCOUNTNUM = ' 20.420')
AND (LEDGERTRANS.TransDate <= @toDateVarchar
AND LEDGERTRANS.TransDate >= @fromDateVarchar))
AND (LEDGERTRANS.DataAreaId = @dataAreaId)
CREATE INDEX i_AccountNum ON BSL_Account20 (AccountNum);
CREATE INDEX i_LedgerTrans ON BSL_Account20 (Source);
SELECT SUM (AmountMST) AS SumResult, AccountNum, Source FROM BSL_Account20 GROUP BY AccountNum, Source;