16.09.2003, 09:27 | #1 |
Участник
|
Вызов хранимой процедуры
Всем Hello!
Что -то не могу получить данные из SP. Cвойство класса CalledFrom = Server Axapta говорит: Ошибка ODBC. Недопустимое использование курсора. Через Analizer нормально работает. А без использования процедуры нельзя - очень долго запрос выполняется. Помогите пожалуйста разобраться. PHP код:
CREATE PROCEDURE sp_BSL_Account20 @dataAreaId varchar(255), -- Компания для расчета @fromDateVarchar varchar(255), -- Дата начала (строка) периода расчета @toDateVarchar varchar(255) -- Дата конца (строка) периода расчета AS IF EXISTS (SELECT name FROM sysobjects WHERE name = 'BSL_Account20') 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; GO |
|