Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];

Вниз

ADO, ошибка в провайдере MSDAORA при select... for update   Найти похожие ветки 

 
Es   (2012-12-24 19:49) [0]

Если кратко: при использовании select..for update провайдер MSDAORA в результате зануляет результат зароса.

То есть, имеем Connection String:

Provider=MSDAORA.1;Password=YYY;User ID=XXX;Data Source=ZZZ;Persist Security Info=True;

Делаем запрос:

select id from TestTable where id = 1 for update

в результате, если сделаем:

ShowMessage(IntToStr(q1.FieldByName("id").AsInteger));

то получим ноль!
Данные занулены в датасете. Если делать без --for update , то все нормально

Если взять провайдера OraOLEDB.1 тоже все нормально.

Кто-нибудь сталкивался с проблемой, как вылечить? )
Кардинальных решений не предлагайте, может как-то запрос можно по-другому составить...


 
Ega23 ©   (2012-12-24 19:51) [1]

А возвращает ли select for update рекордсет?


 
Es   (2012-12-24 20:17) [2]


> А возвращает ли select for update рекордсет?

если я правильно понял твой вопрос, то строчка:


> Если взять провайдера OraOLEDB.1 тоже все нормально.

является ответом?


 
Игорь Шевченко ©   (2012-12-24 20:48) [3]

Если кратко, то рекомендуется практически всегда использовать провайдер производителя


 
Медвежонок Пятачок ©   (2012-12-24 21:23) [4]

А нахрена for update?

Если запрос редактируемый, то он и будет редактируемым без for update


 
Styx   (2012-12-24 22:42) [5]


> А нахрена for update?

Для транзакций?


 
Медвежонок Пятачок ©   (2012-12-24 22:43) [6]

Нахрен для транзакций фор апдейт?


 
Styx   (2012-12-24 22:55) [7]


> Нахрен для транзакций фор апдейт?

Чтобы заблокировать набор для последующего обновления. Если ты выбрал for update, то другим с аналогичным запросом придётся ждать конца твоей транзакции.


 
Медвежонок Пятачок ©   (2012-12-24 22:56) [8]

Транзакция-то здесь причем?


 
Styx   (2012-12-24 22:59) [9]


> Транзакция-то здесь причем?

При том, что вне транзакции for update не несёт никакого смысла?


 
Медвежонок Пятачок ©   (2012-12-24 23:10) [10]

без транзакции апдейт никакого смысла не имеет и не произойдет.


 
Игорь Шевченко ©   (2012-12-24 23:37) [11]

http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10002.htm#i2130052


 
Медвежонок Пятачок ©   (2012-12-24 23:39) [12]

это типа мне?
на случай если я с села и не слышал для чего нужен форапдейт?


 
Игорь Шевченко ©   (2012-12-24 23:44) [13]


> на случай если я с села


На тот самый случай


 
Медвежонок Пятачок ©   (2012-12-24 23:45) [14]

Спасибо конечно, но случай совсем нет тот.


 
Es   (2012-12-25 12:18) [15]


> А нахрена for update?

вообще?
Тебе дали ссылку. Блокировка ресурса, гарантия, что его теперь никто не изменит.

Конкретно здесь?
Это тестовый пример, чтобы показать глюк.


 
Медвежонок Пятачок ©   (2012-12-25 12:53) [16]

Мне не нужна была ссылка для чего вообще нужен форапдейт.
Мне нужно было знать зачем тебе форапдейт.


 
Es   (2012-12-25 13:31) [17]

мне он нужен для того же самого. Чтобы сделать выборку и при этом заблокировать её для изменений конкурирующими транзакциями.


 
Es   (2012-12-26 12:57) [18]

решение забавное.

Если перед SELECT"ом (перед Open) сделать BeginTrans, то тогда все возвращается корректно.
Особенно это радует в контексте того, что в оракле отсутствует команда начала транзакции...



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
15-1356553802
Юрий
2012-12-27 00:30
2013.04.28
С днем рождения ! 27 декабря 2012 четверг


15-1356364173
Es
2012-12-24 19:49
2013.04.28
ADO, ошибка в провайдере MSDAORA при select... for update


2-1350458591
thely
2012-10-17 11:23
2013.04.28
Аккуратный выход


2-1350293913
Дмитрий С
2012-10-15 13:38
2013.04.28
Сравнить два пути к файлу.


15-1356813003
Юрий
2012-12-30 00:30
2013.04.28
С днем рождения ! 30 декабря 2012 воскресенье





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский