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

Вниз

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

 
Tany   (2009-04-26 01:00) [0]

PSQL - ткните пожалуйта на русские доки, ничего не могу найти по циклам итд.

Нужно сделать следующие:
1) получить результат запроса "select" прямо в процедуре (результат наверное можно слить в курсор?)
2)затем (fetch all) отрыть все записи из курсора
3)пробежаться циклом по открытому набору из сделать подзапрос к другой табличке, если  результат подзапроса удовлетворяется, то обновить "третью табличку".

это вобщих чертах для нагрядности, можно ли вообще  делать такое в процедурах, чтобы полностью весь обсчет перенести на серверную часть?

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


 
ТД   (2009-04-26 01:05) [1]

www.ibase.ru


 
sniknik ©   (2009-04-26 02:20) [2]

> Нужно сделать следующие:
> 1) получить результат запроса "select" прямо в процедуре (результат наверное можно слить в курсор?)
> 2)затем (fetch all) отрыть все записи из курсора
> 3)пробежаться циклом по открытому набору из сделать подзапрос к другой табличке, если  результат подзапроса удовлетворяется, то обновить "третью
>табличку".
и все это скорее всего можно заменить на один апдейт по под запросу с объединением...
если решать задачу конечно, а не обсуждать абстракции.


 
Tany   (2009-04-26 14:36) [3]

Ну объесните еще дубу,

вот пример из R. Notes


DECLARE RNAME CHAR(31);
DECLARE C CURSOR FOR ( SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS );
BEGIN
OPEN C;
WHILE (1 = 1) DO
BEGIN
FETCH C INTO :RNAME;
IF (ROW_COUNT = 0) THEN
LEAVE;
SUSPEND;
END
CLOSE C;
END


1)ну тут понятно: выбирается только одно поле и заносится в переменную
RNAME;
FETCH C INTO :RNAME;
а если их несколько?

2)и если в цикле WHILE (1 = 1) DO нужно делать заполнение еще одного курсора по условию предыдущей выборки, но объвить его можно только полсе "as"?

> и все это скорее всего можно заменить на один апдейт по
> под запросу с объединением...
> если решать задачу конечно, а не обсуждать абстракции.


Решаю эту задачу без проблем использую пять TQuery, цель понять стоит ли так сильно заморачиваться на этих процедурах, мне кажеться польностью заменить паскаль они не могут? вот не пойму как решить 1) и 2) из моего вопроса.


 
sniknik ©   (2009-04-26 15:06) [4]

> Решаю эту задачу без проблем использую пять TQuery
пять TQuery это проблема. я имел ввиду запрос в одном. (у тебя все данные. по описанию берутся с сервера и обновление делается тоже на сервере. логично, нужно стараться сделать так чтобы не приходилось тянуть данные на клиента, но процедура тут не цель, а средство. одно из возможных.)

> цель понять стоит ли так сильно заморачиваться на этих процедурах
заморачиваться ни на чем не стоит, вот подучить sql это да, пригодится. но даже зная как писать процедуры не стоит их пихать куда ни попадя.



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
15-1238777724
Petr V. Abramov
2009-04-03 20:55
2009.06.14
как оучить кошек драть когтями диван?


1-1211356137
Vlad Oshin
2008-05-21 11:48
2009.06.14
Как бы сделать лог действий в виде перечисления компонент


2-1240749151
Dmitrii
2009-04-26 16:32
2009.06.14
что возврошает функция Integer(str) ?


15-1239092112
Cobalt
2009-04-07 12:15
2009.06.14
Установка JEDI


2-1240556754
worldmen
2009-04-24 11:05
2009.06.14
Вставка русского текста через TIBTable





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