Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Delphi bind variable  [new]
Halmurat
Member

Откуда:
Сообщений: 31
Помогите найти ошибку в этой части кода:

SQLQuery:='INSERT INTO DISTRS(ID,FIO) VALUES (DISTR_SEQ.NEXTVAL,:fio)';
with MyQuery do
begin
SQL.Clear;
SQL.Add(SQLQuery);
DeleteVariables;
DeclareVariable('fio',otString);SetVariable('fio','Test');
Execute;
end;

Ошибка : ORA - 01036: illegal variable name/number.
16 янв 08, 07:36    [5157875]     Ответить | Цитировать Сообщить модератору
 Re: Delphi bind variable  [new]
Календаревед
Guest
а здесь люди не используют DeclareVariable, а используют ParamByName
16 янв 08, 11:16    [5158742]     Ответить | Цитировать Сообщить модератору
 Re: Delphi bind variable  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 51769
Halmurat
Помогите найти ошибку в этой части кода:
SQLQuery:='INSERT INTO DISTRS(ID,FIO) VALUES (DISTR_SEQ.NEXTVAL,:fio)';
with MyQuery do
begin
   SQL.Clear;
   SQL.Add(SQLQuery);
   DeleteVariables;
   DeclareVariable('fio',otString);
   SetVariable('fio','Test');
   Execute; 
end;
Ошибка : ORA - 01036: illegal variable name/number.
На вид всё честно.
А ошибка точно в этом блоке?
Кстати, включи в MyQuery параметр debug=true - помогает при отладке
16 янв 08, 11:55    [5159041]     Ответить | Цитировать Сообщить модератору
 Re: Delphi bind variable  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1031
DOA Help

procedure ClearVariables;
Description
Assigns nulls to all declared variables.

procedure DeleteVariables;
Description
Deletes all declared variables.

{$apptype console}
procedure TForm1.Button1Click(Sender: TObject);
begin
   MyQuery.SQL.Text := 'Select :foo from dual';
   MyQuery.DeclareAndSet('foo',otString,'hello');
   MyQuery.Execute;
   writeln(MyQuery.Field(0));
   //MyQuery.ClearVariables;
   MyQuery.DeleteVariables;
   MyQuery.SQL.Text := 'Select :bar from dual';
   MyQuery.DeclareAndSet('bar',otString,'world');
   MyQuery.Execute;
   writeln(MyQuery.Field(0));
end;
16 янв 08, 12:14    [5159185]     Ответить | Цитировать Сообщить модератору
 Re: Delphi bind variable  [new]
Halmurat
Member

Откуда:
Сообщений: 31
Проблема решена.
Для решения проблемы, помог включение отладки(debug=true)

Действительно, дело было не в этом блоке.
Просто после этого блока, я использовал эту же переменную(MyQuery), для другого
запроса(которые не использует binding).А объявленные ранее переменные(в этом случае :fio), оставались объявленыыми, и вот Оракл ругался, что я его не использовал.
Просто после вышеуказанного блока, поставил DeleteVariables, и пошло.

Спасибо всем.
16 янв 08, 12:42    [5159396]     Ответить | Цитировать Сообщить модератору
 Re: Delphi bind variable  [new]
_varvar_
Member

Откуда:
Сообщений: 155
Так у него DeleteVariables и используется.
16 янв 08, 12:42    [5159397]     Ответить | Цитировать Сообщить модератору
 Re: Delphi bind variable  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1031
_varvar_
Так у него DeleteVariables и используется.

Сорри.. чтото в моем мозгу странное случилось. 8-0
16 янв 08, 12:47    [5159428]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить