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

Вниз

Хранимые процедуры в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.217 c
15-1239285021
12
2009-04-09 17:50
2009.06.14
Поддерживает.. Что за глупое выражение


2-1240845722
Drowsy
2009-04-27 19:22
2009.06.14
Как переименовать таблицу IB?


2-1240577886
гранит
2009-04-24 16:58
2009.06.14
Вопрос


2-1240693236
Tany
2009-04-26 01:00
2009.06.14
Хранимые процедуры в FireBird


2-1240762612
Ramil
2009-04-26 20:16
2009.06.14
Фильтрация подстановочных полей