Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.24;
Скачать: CL | DM;

Вниз

Хранимые Процедуры разных типов   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.066 c
11-1141583047
Vladimir Kladov
2006-03-05 21:24
2006.12.24
Версия 2.34


4-1155719868
Sevish
2006-08-16 13:17
2006.12.24
P2K интерфейс.


15-1165203590
Slider007
2006-12-04 06:39
2006.12.24
С днем рождения ! 4 декабря


2-1165479794
Megabyte
2006-12-07 11:23
2006.12.24
Диаграммы для данных из БД


4-1155739454
webpauk
2006-08-16 18:44
2006.12.24
Проверка строковой переменной