|
|
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Доброе время суток, такой вопрос: У меня DELPHI 10.2, ibx19,19, ни как не найду информацию о поддержке IBX оператора RETURNING. Я его хочу использовать в IBQuery (после вставки строки), ну как тут уже писали, предыдущие версии его не поддерживали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 13:45 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
ЕМНИП, такого предиката в InterBase нет. Следовательно, в IBX он без допиливания не поддерживается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 13:47 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Любезный, Значит без внутренней процедуры не обойтись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 13:51 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Konstantin-78, а тупо попробовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 13:58 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Что-то мне кажется, что если тупо засунуть INSERT RETURNING в обычный TIBQuery или TIBDataset и сделать Open, то всё заработает само. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:12 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
YuRockЧто-то мне кажется Наверное еще никого это простая мысль не посещала. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:14 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
YuRockЧто-то мне кажется, что если тупо засунуть INSERT RETURNING в обычный TIBQuery или TIBDataset и сделать Open, то всё заработает само. Прикинь, оно и работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:16 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
КотовасияПрикинь, оно и работает. Типа так?: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. с ошибкой на " q := IBQuery1.ParamByName('ID').Value; " 'IBQuery1: List index out of bounds (0)'. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:23 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Konstantin-78Типа так?: Нет. Немного не так. Любые значения возвращаются через Fields. И запрос с RETURNING рассматривается не как select, а как execute procedure. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:29 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНет. Немного не так. Любые значения возвращаются через Fields. И запрос с RETURNING рассматривается не как select, а как execute procedure. Вы имели в виду вот так? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:40 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Konstantin-78Вы имели в виду вот так? За такой код я бы отрывал руки с запретом на профессию, но в целом таки да, как-то так. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:45 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Konstantin-78, только что проверил - работает: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:46 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Konstantin-78, Запомни простую истину: никогда, накогда не используй CommitRetaining/RollbackRetaining. Иначе два варианта: 1. Ты сменишь профессию, а твоё поделие придется переделывать другому; 2. Тебе самому придется всё переделывать со временем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:54 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
YuRockKonstantin-78, Запомни простую истину: никогда, накогда не используй CommitRetaining/RollbackRetaining. Иначе два варианта: 1. Ты сменишь профессию, а твоё поделие придется переделывать другому; 2. Тебе самому придется всё переделывать со временем. Прямо вот так "никогда"? Может, тогда сразу расскажешь, как редактировать данные в ibx датасете, чтобы он не закрывался по каждому коммиту/роллбэку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 14:58 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
КотовасияYuRockKonstantin-78, Запомни простую истину: никогда, накогда не используй CommitRetaining/RollbackRetaining. Иначе два варианта: 1. Ты сменишь профессию, а твоё поделие придется переделывать другому; 2. Тебе самому придется всё переделывать со временем. Прямо вот так "никогда"? Может, тогда сразу расскажешь, как редактировать данные в ibx датасете, чтобы он не закрывался по каждому коммиту/роллбэку? Использовать датасеты, которые поддерживают 2 транзакции. Читающая длинная, пишущая - короткая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 15:26 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
КотовасияМожет, тогда сразу расскажешь, как редактировать данные в ibx датасете, чтобы он не закрывался по каждому коммиту/роллбэку? Ты имеешь ввиду - редактировать гриды "в гриде"? Зачем это вообще надо? Если уж надо - делаешь форму редактирования запись, после редактирования - стартуешь пишущую транзакцию, делаешь инсерт/апдейт, commit, refresh датасета, всё. Либо использовать датасеты с двумя транзакциями, как сказал ужа wadman. Но, имхо, это нужно чаще всего для редактирования гридов в гридах, что я считаю уродством. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 15:38 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
А датасет должен быть открыт в read-only транзакции, ессно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 15:39 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
wadmanКотовасияпропущено... Прямо вот так "никогда"? Может, тогда сразу расскажешь, как редактировать данные в ibx датасете, чтобы он не закрывался по каждому коммиту/роллбэку? Использовать датасеты, которые поддерживают 2 транзакции. Читающая длинная, пишущая - короткая. Т.е., не использовать датасеты ibx. Или использовать их после допиливания. А чем плоха длинная "пишущая" транзакция "стандартного" датасета ibx, которая 99,999% времени ничего не пишет, кроме короткого быстрого post с последующим немедленным CommitRetaining? Расскажи, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 15:40 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
YuRockА датасет должен быть открыт в read-only транзакции, ессно.Почему "естественно"? Ну вот если в этой транзакции данные не модифицируются - в чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 15:42 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
КотовасияYuRockА датасет должен быть открыт в read-only транзакции, ессно.Почему "естественно"? Ну вот если в этой транзакции данные не модифицируются - в чем проблема? В этой - не модифицируются. В других - вполне себе (у других пользователей). Получаешь накопление ненужных версий записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 16:04 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
DarkMasterКотовасияпропущено... Почему "естественно"? Ну вот если в этой транзакции данные не модифицируются - в чем проблема? В этой - не модифицируются. В других - вполне себе (у других пользователей). Получаешь накопление ненужных версий записи. После CommitRetaining начнут копиться версии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 16:11 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
КотовасияDarkMasterпропущено... В этой - не модифицируются. В других - вполне себе (у других пользователей). Получаешь накопление ненужных версий записи. После CommitRetaining начнут копиться версии? Да, kdv пишет, что такое может случиться, в общем случае следует избегать Retaining, но для датасетов ibx вариантов нет, или допиливать или изменения в отдельной транзакции делать, ручками; или таки c Retainig - но учитывать ситуацию и понимать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 16:44 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Konstantin-78IBTransaction1.CommitRetaining; вот зачем такую стыдобу писать? Мало того, CommitRetaining, так он еще между открытием запроса и получением значения. Кто вас такому научил? Выполнил insert, получил данные, сделал commit, если надо. CommitRetaining для insert/update/delete ни к селу, ни к городу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 17:36 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Т.е., не использовать датасеты ibx. Или использовать их после допиливания. Со стандартными компонентами IBX приходится использовать in-memory-dataset (например, TRXMemoryData или что-нибудь посвежей) и его подключать к гриду. В этом случае: 1. Обеспечивается независимость от качества соединения с БД (данные не исчезнут при дисконнекте) 2. При добавлении / изменении / удалении записи не требуется переоткрывать весь датасет 3. По факту получается не очень много дополнительного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 17:49 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
DmSer, да ну нафиг, уж лучше старые фибы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 17:54 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
YuRockЗапомни простую истину: никогда, накогда не используй CommitRetaining/RollbackRetaining. Я нашёл одно полезное свойство CommitRetaining: если при решении задачи требуется обработать множество строк (например, финансовые операции) и для каждой операции требуется закоммитить транзакцию, то с CommitRetaining запросы с параметрами будут выполнены быстрее, поскольку не будет каждый раз заново выполняться операция PREPARE. Если база находится на отдельном компьютере, а скорость соединения не особо быстрая, то ускорение может быть в несколько раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 17:56 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
КотовасияА чем плоха длинная "пишущая" транзакция "стандартного" датасета ibx, которая 99,999% времени ничего не пишет, кроме короткого быстрого post с последующим немедленным CommitRetaining? Расскажи, пожалуйста. Тем, что эта пишущая транзакция сборке мусора будет очень мешать. Если она будет открыта несколько дней (и ничего не делать при этом, как ты говоришь - висеть себе и всё) - то эти несколько дней не будет сборки мусора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 17:57 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
DmSerс CommitRetaining запросы с параметрами будут выполнены быстрее, поскольку не будет каждый раз заново выполняться операция PREPARE. Если твои компоненты доступа распрепарируют запрос при коммите, это их проблемы. Обычно препарированный запрос способен нормально жить аж до дисконнекта. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 17:59 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
DmSerЯ нашёл одно полезное свойство CommitRetaining: если при решении задачи требуется обработать множество строк (например, финансовые операции) и для каждой операции требуется закоммитить транзакцию, то с CommitRetaining запросы с параметрами будут выполнены быстрее, поскольку не будет каждый раз заново выполняться операция PREPARE Разве Prepare делается для каждой транзакции? Не очень верю. Я использую CommitRetaining в одном месте: для мониторинга доступности базы. RORC-транзакции делаю CommitRetaining по таймеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:00 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
КотовасияDmSer, да ну нафиг, уж лучше старые фибы. Конечно они лучше, тем более сейчас они вроде халявные :) Но вот встанет у меня задача переделать один мой проект (там пара-тройка сотен тыщ строк кода) под Линукс - опаньки, а там есть для Лазаруса допиленный IBX, т.е. задачу можно будет решить за ограниченное время, учитывая, что в проекте не менее тысячи различных запросов к БД. А с фибами будет всё намного сложнее. Кстати, никто проверял, в последних версиях Delphi под Линукс компоненты IBX случайно с Firebird не умеют работать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:04 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
YuRockРазве Prepare делается для каждой транзакции? Не очень верю. Увы, в IBX оно так! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:06 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
DmSerУвы, в IBX оно так! Тынц Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. При чем здесь IBX? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:10 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_DmSerУвы, в IBX оно так! Тынц Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. При чем здесь IBX? Прочитал статью по ссылке, просмотрел функцию isc_dsql_prepare, насладился жёлтой подсветкой. Всё понравилось. А делать-то с этим теперь что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:25 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_При чем здесь IBX? Ты не поверишь, но запрос не ограничен рамками транзакции в которой его препарировали. Выполняться он способен и в любой другой. Хоть это и влечёт за собой забавные спецэффекты на динамических метаданных. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:31 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
DmSerА делать-то с этим теперь что?Проблема не в IBX, а в API Interbase. Стейтментов вне транзакции не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:32 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovзапрос не ограничен рамками транзакции в которой его препарировали.Интересный функционал. Он где-то документирован или просто "так работает"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:34 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Стейтментов вне транзакции не существует Это ты зря так думаешь: Код: sql 1. 2. 3. 4. Где здесь транзакция? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:37 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovГде здесь транзакция?Это аллок. При создании объекта память тоже как-бы принадлежит всему процессу, но объект доступен только по месту создания. А если кто-то полезет по сырому указателю к этому объекту, то ССЗБ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:43 |
|
||
|
IBX 19_19 вопрос с поддержкой оператора RETURNING
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Он где-то документирован или просто "так работает"? API guideAfter a statement is prepared, it is available for execution as many times as necessary during the current session . Ну и то, что в execute требуется хэндл транзакции как бы тоже намекает. Там, где запросы привязаны к транзакции, такого не допускают. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2040328]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 494ms |

| 0 / 0 |
