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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.08.2016, 10:39   #5  
Pandasama is offline
Pandasama
Участник
 
465 / 140 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Цитата:
Сообщение от AndyD Посмотреть сообщение
оберните свои запросы в блок try/catch внутри T-SQL
Не помогло

Вот тестовый пример, аналогичный описываемой задаче:
X++:
public server static void testSQL()
{
    Set                                 permissionSet               = new Set(Types::Class);
    Connection                          connection;
    Statement                           statement;
    str                                 query;
    TestTable3798                       testTable; //test table (SaveDataPerCompany = No) with one field str[10] named Field1
    ;

    query += "BEGIN TRY \n";
    query += "BEGIN TRANSACTION; \n";
    query += "SELECT TOP 1  * FROM CustTable; \n";
    query += "INSERT INTO TESTTABLE3798 (Field1, RecId) VALUES ('test', 123456); \n" ;
    query += "SELECT TOP 1 * FROM SYSTEMSEQUENCES WHERE NAME = -1; \n"; //query with error
    query += "COMMIT TRANSACTION; \n";
    query += "END TRY \n";
    query += "BEGIN CATCH \n";
    query += "ROLLBACK TRANSACTION; \n";
    query += "THROW; \n";
    query += "END CATCH \n";
    
    connection = new Connection();
    statement = connection.createStatement();
    permissionSet.add(new SqlStatementExecutePermission(query));
    CodeAccessPermission::assertMultiple(permissionSet);
    statement.executeUpdate(query);
    CodeAccessPermission::revertAssert();
}
запрос получается вот такой
Код:
BEGIN TRY 
BEGIN TRANSACTION;
SELECT TOP 1 * FROM CustTable; 
INSERT INTO TESTTABLE3798 (Field1, RecId) VALUES ('test', 123456); 
SELECT TOP 1 * FROM SYSTEMSEQUENCES WHERE NAME = -1; 
COMMIT TRANSACTION; 
END TRY 
BEGIN CATCH 
ROLLBACK TRANSACTION; 
THROW;
END CATCH
валидацию он проходит, но в рантайме дает ошибку
Цитата:
(1 row(s) affected)

(1 row(s) affected)

(0 row(s) affected)
Msg 245, Level 16, State 1, Line 5
Conversion failed when converting the nvarchar value 'Event' to data type int.
в указанном выше X++ statement.updateQuery() выполняется без ошибки
Теги
error, executeupdate, sql, statement, transact sql, transaction

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
dynamicsaxhints: Select statement on field Blog bot DAX Blogs 0 22.03.2016 09:11
emeadaxsupport: AX 2012 R3 for Retail - Clear Statement Greyed Out Blog bot DAX Blogs 0 01.05.2015 20:16
emeadaxsupport: Using Post Inventory along with Calculate and Post Statement in AX 2012 Retail Blog bot DAX Blogs 0 10.03.2015 02:16
emeadaxsupport: Oversettlement error when posting a Retail statement in AX 2012 R2 Blog bot DAX Blogs 0 27.09.2013 06:16
dynamicsaxtraining: Select statement patterns Blog bot DAX Blogs 10 20.08.2010 14:01
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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