AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2003, 09:27   #1  
Diman is offline
Diman
Участник
Сотрудники Microsoft Dynamics
 
166 / 35 (2) +++
Регистрация: 27.06.2003
Адрес: Москва
Вызов хранимой процедуры
Всем Hello!
Что -то не могу получить данные из SP.
Cвойство класса CalledFrom = Server
Axapta говорит: Ошибка ODBC. Недопустимое использование курсора.
Через Analizer нормально работает.
А без использования процедуры нельзя - очень долго запрос выполняется.
Помогите пожалуйста разобраться.

PHP код:

Str parseQuery
()
{
    
Str SQLQuery "EXEC dbo.sp_BSL_Account20    ";

    
SQLQuery +="'tst','01/02/2003','02/02/2003'";

    return 
SQLQuery;
}


/****************************************************/
 
public void run()
{

    
Connection conn;
    
Statement Stmt;
    
ResultSet rslt;

    
int start_t;
    
LedgerTrans tblLedgerTrans;
    
InventTrans tblInventTrans;
    
BSL_LockSPAccount tblLocksSP;
    ;

    
super();

    
start_t timenow();
    
conn = new UserConnection();
    
Stmt conn.createStatement();

    
ttsBegin;
        
select forupdate tblLocksSP;
        
tblLocksSP.UserId CurUserId ( );
        
tblLocksSP.insert();

        
/*Вызов процедуры*/
         
rslt Stmt.executeQuery(this.parseQuery());

         while(
rslt.next())
        {
           
w(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));


Собственно процедура:

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
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вызов метода базового класса Eldar9x DAX: Программирование 15 22.03.2008 19:10
Вызов экспортируемой функции DLL Jabberwocky DAX: Программирование 8 12.09.2006 17:20
SQL Profiler не показывает процедуры!SOS! naomy DAX: Программирование 13 28.09.2005 14:33
Хранимые процедуры и производительность vey DAX: Администрирование 13 17.06.2005 10:56
Как результат выполнения хранимой процедуры поместить в Grid? Yuri Safronov DAX: Программирование 1 28.08.2002 12:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:42.