Форум: "Начинающим";
Текущий архив: 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.45 MB
Время: 0.006 c