Interbase SQL_TEXT & SQL_VARYING проблемы
От: Sergey Merkuriev  
Дата: 28.04.03 06:15
Оценка:
Hello All.

Есть тарблема с SQL_TEXT & SQL_VARYING парамтрами XSQLVAR.

Есть процедура:
procedure TZIbSql.SetParameter(SqlVar: PXSQLVAR; Value: variant);
....
case SqlVar.sqltype and (not 1) of
   SQL_TEXT, SQL_VARYING:
     begin
       TempStr := VarToStr(Value);
       SqlVar^.sqllen := Length(TempStr);
       ReallocMem(SqlVar^.sqldata, SqlVar^.sqllen + 1);
       if Length(TempStr) > 0 then
         Move(TempStr[1], SqlVar^.sqldata^, SqlVar^.sqllen);


Запрос след. рода: 'INSERT INTO test (id, name) VALUES(?,?)'
Я делаю подготовку запроса создаю StatementHandle и распределяю XSQLDA.
Потом делаю подготовку параметров для запроса распределяю для этого XSQLDA и заполняю параметры в SetParameter
Далее выполняю
isc_dsql_execute(@FStatusVector, @FTrHandle,
          @FStmtHandle, FDialect, FParamSqlData);


При проверке FStatusVector получаю ошибку:

"Sql error: Dynamic SQL error. Error: -804. An error found in the application input parameter for the SQL statement.


Если убрать текстовый параметр/поле — "name" все работает отлично. я думаю что проблема с заполнением SqlVar^.sqldata для текстовых полей.

Примечание: Мои компоненты работают нормально с простымим запросами (без параметров) возвращают все данные корректно. Проблема заключается в запросах с параметрами.
--
То, что вы уникальны еще не значит, что от вас есть толк
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.