Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не работает UPDATE в ORACLE, Прога тупо зависает 
:(
    Опции темы
AlexLogos
Дата 23.10.2010, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 23.4.2009

Репутация: нет
Всего: 1



Я програмирую в RAD 2009 поствил DEVART компоненты для роботы с ORACLE. До вчерашнего дня не было нареканий, но при исполнении некоторых зарпросов прога тупо зависает. При том что эти запросы с легкостью хавает TOAD. Этот запрос не выполняет не зависимо от того какие поя апдейтаю:
Код

  with OQTemp do
   begin
    Active:=False;
    SQL.Clear;
    SQL.Add('update C10 set uplevel = null, text = ''asd'', old_kod = 0 where id =1');
    Memo1.Lines.Add(SQL.Text);
    ExecSQL;
   end;

или на добавление записи если значение поля устанавливается в null:
Код

  with OQTemp do
   begin
    Active:=False;
    SQL.Clear;
    SQL.Add('insert into C10(id,uplevel,text,old_kod) values (1,null,''asd'',0)');
    Memo1.Lines.Add(SQL.Text);
    ExecSQL;
   end;

В чем суть? То ли компоненты битые, то ли еще какая лажа...
PM MAIL   Вверх
Vas
Дата 25.10.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



А параметрами передать значения пробовали?

Добавлено через 2 минуты и 51 секунду
Да кстати, компоненты ODAC что-ли? У меня с ними проблем никогда не было, отличная вещь  


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
AlexLogos
Дата 26.10.2010, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 23.4.2009

Репутация: нет
Всего: 1



Нет, и чесно говоря не представляю себе как это сделать. Подскажите - обязательно попробую.
PM MAIL   Вверх
Vas
Дата 27.10.2010, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Код

with OQTemp do
   begin
    Active:=False;
    SQL.Clear;
    SQL.Add('update C10 set uplevel = :uplevel, text = :text, old_kod = :old_kod where id = :id');
    Params.ParamByName('ID').AsInteger:=1;
    Params.ParamByName('Text').AsString:='dfdfdfg';
    Params.ParamByName('old_kod').AsInteger:=0;
    Params.ParamByName('uplevel').AsString:='';  //запишется в БД значение null
    ExecSQL;
   end;



Это сообщение отредактировал(а) Vas - 27.10.2010, 13:29


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
AlexLogos
Дата 28.10.2010, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 23.4.2009

Репутация: нет
Всего: 1



Выдает ошибку при выполнении кода, если использую параметр:
Код

Params.ParamByName('uplevel').AsString:='';

First chance exception at $7C812AFB. Exception class EOraError with message 'ORA-22295: cannot bind more than 4000 bytes data to LOB and LONG columns in 1 statement
'. Process Project1.exe (2888)

Если его не использую - почему-то криво обновляет записи. Может параметры надо ставить в порядке их вхождения в текст запроса?
PM MAIL   Вверх
superVad
Дата 28.10.2010, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



А если оставить uplevel как и раньше было в запросе, а остальные через параметры?
PM MAIL   Вверх
AlexLogos
Дата 28.10.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 23.4.2009

Репутация: нет
Всего: 1



так ошибку не выдает, на обновляет запись криво - не тот текст, не тот олд_код...
PM MAIL   Вверх
Vas
Дата 28.10.2010, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Типы полей какие и какие данные пытаемся передать?


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
AlexLogos
Дата 29.10.2010, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 23.4.2009

Репутация: нет
Всего: 1



Вот данные которые передаем: 
Код

    SQL.Add('update SCL_10 set uplevel = null, text = :text, old_kod = :old_kod where id = :id');
    Params.ParamByName('text').AsString:='''РУКОВОДСТВО2''';
    Params.ParamByName('old_kod').AsInteger:=2;
    Params.ParamByName('id').AsInteger:=2;

uplevel, id, old_kod - number, text - varchar2(40)
PM MAIL   Вверх
Vas
Дата 29.10.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Дык, а кавычки лишние в Руководстве нахрена?

Код

Params.ParamByName('text').AsString:='''РУКОВОДСТВО2'''; 



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
AlexLogos
Дата 29.10.2010, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 23.4.2009

Репутация: нет
Всего: 1



Потому что иначе: 
Код

First chance exception at $7C812AFB. Exception class EOraError with message 'ORA-01483: invalid length for DATE or NUMBER bind variable
'. Process Project1.exe (5280)

При составлении запроса текст берется в кавычки. подставляя его параметром, кавычки автоматически не вставляються.

Это сообщение отредактировал(а) AlexLogos - 29.10.2010, 16:42
PM MAIL   Вверх
Vas
Дата 29.10.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Что-то херня какая-то. В параметрах текст передается без дополнительных кавычек, ему так и пишем что он String, компонент вставит как надо. 
А если вместо 
Код

ExecSQL;

написать
Код

Execute;


Добавлено через 5 минут и 21 секунду
Кстати descr SCL_10 в sqlplus или TOAD что показывает?

Это сообщение отредактировал(а) Vas - 29.10.2010, 19:04


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
superVad
Дата 30.10.2010, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



AlexLogos вобщем если так и задумывалось, что строка в базе будет с кавычками то все правильно, а так для параметров лишние кавычки ни к чему, для того и есть параметры, что бы им передавать просто строку и не мучить голову.
PM MAIL   Вверх
AlexLogos
Дата 30.10.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 23.4.2009

Репутация: нет
Всего: 1



Если пишу русский текст без кавычек то при исполнении кода
Код

    SQL.Add('update CL_10 set uplevel = 1, text = :text, old_kod = :old_kod where id = :id');
    Params.ParamByName('text').AsString:='РУКО';
    Params.ParamByName('old_kod').AsInteger:=2;
    Params.ParamByName('id').AsInteger:=2;
    Memo1.Lines.Add(OQTemp.SQL.Text);
    Execute;

в колонку old_kod вносится некорректное значение. С кавычками - нормально, но в любом случае я получаю в поле text белиберду
user posted image

В TOADе то же.

Это сообщение отредактировал(а) AlexLogos - 30.10.2010, 09:53
PM MAIL   Вверх
Vas
Дата 31.10.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



А это уже больше похоже на косяки с юникодом. Только вот числа странно как-то записываются.


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0518 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.