Форум: "Базы";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
ВнизХранимые Процедуры разных типов Найти похожие ветки
← →
Megabyte © (2006-10-11 11:24) [0]У меня хп является одновременно процедурой действия и выбора. Возможно ли использовать такую процедуру или обязательно надо разбивать ее на 2: действия и селективную? Ведь выполняются они по-разному.
Просто запускаю процедуру черезselect * from my_sp(:param)
и через методы IBQuery close, open, тогда не выполняются действия.
Если использую метод execSQL, то ругается, что требуется открыть датасет.
Код процедуры правильный, т.к. сделал отдельно процедуру действия и проверял в IBExpert"е, также проверял селективную часть.
← →
Desdechado © (2006-10-11 11:44) [1]> одновременно процедурой действия и выбора
не понял
> select * from my_sp(:param)
> и через методы IBQuery close, open, тогда не выполняются действия.
какие действия не выполняются?
Видимо, условия не подходят.
← →
Megabyte © (2006-10-11 12:17) [2]Ладно, я уже разделил их. В процедуре действия выполняется заполнение и модификация таблицы, а в запросе берутся оттуда данные...
← →
Desdechado © (2006-10-11 12:20) [3]Есть у меня такие процедуры, работают нормально.
В чем сложность-то?
← →
Megabyte © (2006-10-11 14:32) [4]Ну я хз. Просто отдельно куски работают, вместе: либо ругается, либо не происходит никаких действий.
Я понял, что косяк где-то у меня, но мне проще и быстрее не искать баг, а разделить хп. :)
← →
atruhin © (2006-10-11 14:44) [5]> но мне проще и быстрее не искать баг, а разделить хп. :)
Но от простого разделения баг то никуда не ущел! Ты вообще после выполнения Commit делал?
← →
Desdechado © (2006-10-11 15:47) [6](мысли вслух)
как обычно, ни код ХП, ни код вызова не прилагается
ну, гоняй своих тараканов дальше...
← →
Сергей М. © (2006-10-11 17:21) [7]
> У меня хп является одновременно процедурой действия и выбора
> Код процедуры правильный, т.к. сделал отдельно процедуру
> действия
ПлакалЪ..
← →
MsGuns © (2006-10-11 17:38) [8]С т.зр. "клиента" есть 2 типа ХП: возвращающие НД и не возвращающие. А что там внутрях себя эта самая ХП "добавляет-изменяет-удаляет" - это ее унутреннее дело.
← →
atruhin © (2006-10-11 18:29) [9]В Firebird есть ньюанс: так как работа обычно осуществляется в режиме 2 транзакций читающей и пишущей + внутри процедуры нельзя сделать commit, то после вызова процедуры изменяющей данные необходимо сделать commit, а после читающей не нужно. Т.е.
> А что там внутрях себя эта самая ХП "добавляет-изменяет-
> удаляет" - это ее унутреннее дело.
это не совсем ее дело! Программисту приходится учитывать изменяет ли она данные.
← →
Zacho © (2006-10-11 19:27) [10]atruhin © (11.10.06 18:29) [9]
то после вызова процедуры изменяющей данные необходимо сделать commit, а после читающей не нужно
Это, мягко говоря, не совсем так. Нужно или не нужно завершать транзакцию после вызова процедуры зависит исключительно от логики работы приложения, а не от того, изменяет процедура какие-либо данные или нет.
Другое дело, что пишущие транзакции имеет смысл делать максимально возможно короткими, а читающие read commited могут быть и "длительными" без неприятных побочных эффектов. Именно из этого, кстати, следует практика работы с двумя транзакциями - читающей и пишущей.
← →
atruhin © (2006-10-12 02:39) [11]> Нужно или не нужно завершать транзакцию после вызова процедуры
> зависит исключительно от логики работы приложения
Об этом я и говорю, что результат выполнения процедуры зависит и от логики приложения, а не только от логики процедуры. В других серверах это не так.
← →
Zacho © (2006-10-12 02:59) [12]atruhin © (12.10.06 2:39) [11]
Похоже мы друг друга не совсем понимаем.
Ну да ладно, всё равно к исходному вопросу это мало относится. :)
← →
atruhin © (2006-10-12 04:59) [13]Суть моих высказываний сводится к тому, что в Firebird нельзя сделать Commit внутри процедуры, на ряде других серверов можно. Из этого следует остальное :)
← →
Megabyte © (2006-10-12 12:51) [14]
> Desdechado © (11.10.06 15:47) [6]
(мысли вслух)
как обычно, ни код ХП, ни код вызова не прилагается
ну, гоняй своих тараканов дальше...
Какие тараканы, все работает, только сделал по-другому. ;)
Если бы я хотел разобраться, то написал бы код. Мне был интересен только один вопрос, ответ я получил!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c