Главная страница
    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.45 MB
Время: 0.006 c
4-1211165726
DJ Kondakov
2008-05-19 06:55
2009.06.14
Как запаковать файлы в 1 экзешник?


6-1203400294
grisme
2008-02-19 08:51
2009.06.14
CONNECT-режим


15-1239358077
kaif
2009-04-10 14:07
2009.06.14
Как удалить запись из реестра? :)


2-1240560533
Nameziz
2009-04-24 12:08
2009.06.14
связать списки


15-1239305630
Petr V. Abramov
2009-04-09 23:33
2009.06.14
Перепутали дату публикации?





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