Additional
dbCAP
AnyDAC
ThinDAC
NCOCI8
Topic: GetLastAutoGenValue и MSSQL200
[Previous |1 2 ]
Re:GetLastAutoGenValue и MSSQL200
Posted: 2007/08/09 08:49
 
Diman wrote:
ADExecutor разбивает это на две команды = два батча.
А почему это не работает как две команды?
EMS SQL Manager выполняет 2 команды и не кашляет.
Re:GetLastAutoGenValue и MSSQL200
Posted: 2007/08/09 11:50
 
1) Касательно UPDATE и изменения BLOB - уже исправлено в 2.0 коде.
2) > А почему это не работает как две команды?
Вы меня не поняли. Выполнить две команды по очереди, каждая своим ExecSQL / Open, и выполнить их одним батчем, один ExecSQL / Open, это две большие разницы для MSSQL. Прочтите в MSSQL BOL раздел "batches, overview".
Re:GetLastAutoGenValue и MSSQL200
Posted: 2007/08/10 00:21
 
1) Касательно UPDATE и изменения BLOB - уже исправлено в 2.0 коде.Радует. А что можно сделать с существующим кодом?


2) > А почему это не работает как две команды?
Вы меня не поняли. Выполнить две команды по очереди, каждая своим ExecSQL / Open, и выполнить их одним батчем, один ExecSQL / Open, это две большие разницы для MSSQL. Прочтите в MSSQL BOL раздел "batches, overview".
Понял. В описании SCOPE_IDENTITY объясняется, что такое "the same scope".
Re:GetLastAutoGenValue и MSSQL200
Posted: 2007/08/10 00:47
 
Для починки работы с блобами, замените одноименную процедуру на следующий текст:


 function TODBCVariable.GetDataPtr(AIndexSQLUIntegerout ApDataSQLPointer;   out ASizeSQLIntegerout ApIndPSQLInteger): PSQLPointer; begin   ASSERT((FList <> nil) and (FList.FBuffer <> nil));   FList.FBuffer.GetDataPtr(SelfAIndexSQLPointer(Result), ApInd);   if PSQLUInteger(ApInd)^ = SQL_NULL_DATA then     ASize := 0   else     ASize := PSQLUInteger(ApInd)^;   if LongData then begin     ASSERT((ASize <= SQL_LEN_DATA_AT_EXEC_OFFSET) or (ASize >= 0));     ApData := Result^;     if ApData nil then       ASize := 0     else if ASize <= SQL_LEN_DATA_AT_EXEC_OFFSET then       ASize := SQL_LEN_DATA_AT_EXEC_OFFSET ASize;   end   else     ApData := Result;   ASSERT((Result <> nil) and (ASize >= 0)); end;



Предыдущая версия не пропускала блобы с нулевой длиной, но отличные от Null.
Re:GetLastAutoGenValue и MSSQL200
Posted: 2007/08/10 01:10
 
Спасибо. Кажется заработало. А как там дела с монитором?
[Previous |1 2 ]