Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.04 c
1-1163080024
lockheed_man
2006-11-09 16:47
2006.12.24
Разное исполенение кода при дебаге и при простом запуске


9-1140624561
Zero 16
2006-02-22 19:09
2006.12.24
организация инвентаря в РПГ играх


2-1165485502
Goric
2006-12-07 12:58
2006.12.24
Залочить юзера


15-1165320757
Gero
2006-12-05 15:12
2006.12.24
Были раньше времена…


15-1165139896
ml
2006-12-03 12:58
2006.12.24
"TUnRar без Dll" - моя первая статья





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский