Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Создать функцию с выдачей курсора / 10 сообщений из 10, страница 1 из 1
29.01.2003, 16:13
    #32098295
Алексc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать функцию с выдачей курсора
Народ посомогите - глядел уже и в хелпах - надо создать функцию в которой делается селект по таблице - и вот этот селект надо выдать из функции. Не нашел как такое изобразить - подскажите - как это оформить...
...
Рейтинг: 0 / 0
29.01.2003, 19:01
    #32098476
Daugava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать функцию с выдачей курсора
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
FOREACH cur FOR                                                             
   SELECT bla-bla
     INTO bla-bla
     FROM bla-bla
    WHERE bla-bla
    ORDER BY bla-bla
                                                                              
    RETURN bla-bla
    WITH RESUME;
  END FOREACH;
Основная идея "RETURN WITH RESUME;"
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
26.08.2010, 15:54
    #36813376
Создать функцию с выдачей курсора
Подскажите. Ситуация такая же как у Алексса, но источник не запрос, а процедура, которая возвращает несколько строк по нескользо записей в каждой (проще говоря возвращает таблицу). Как правильно оформить foreach?
...
Рейтинг: 0 / 0
26.08.2010, 16:41
    #36813553
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать функцию с выдачей курсора
АлександрИПодскажите. Ситуация такая же как у Алексса, но источник не запрос, а процедура, которая возвращает несколько строк по нескользо записей в каждой (проще говоря возвращает таблицу). Как правильно оформить foreach?такая же, ага. Вам функция нужна которая будет возвращать строкИ или нет?
...
Рейтинг: 0 / 0
26.08.2010, 17:00
    #36813638
Создать функцию с выдачей курсора
Да. Получается есть 4 функции, каждая из которых возвращает несколько записей с одинаковым количеством столбцов (например return t1, t2, t3 with resume). Необходимо унифицировать вызов этих функций - создать пятую, которая, в зависимости от переданного ей параметра, вызывает одну из первых четывех и выдает данные, которые вернула вызванная функция.
...
Рейтинг: 0 / 0
26.08.2010, 17:29
    #36813736
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать функцию с выдачей курсора
а просто execute procedute into cur не работает?


как вариант
select * from table(multiset{some_proc1()}) where param=1
union all
select * from table(multiset{some_proc2()}) where param=2
...
Рейтинг: 0 / 0
26.08.2010, 17:30
    #36813739
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать функцию с выдачей курсора
...
Рейтинг: 0 / 0
26.08.2010, 17:36
    #36813760
Создать функцию с выдачей курсора
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
foreach execute procedure sel_pairs_device(regnC,codeAdm) into _regnC, _koda1, _nrsh1, _flagUst1, _ustNum1, _paraNum2Kl, _regnC2Kl2, _koda2, 
_nrsh2, _flagUst2, _ustNum2, _paraNum2Kl2, _regnCLnk, _kodaLnk, _nrshLnk, _flagUstLnk, _ustNumLnk, _paraNum, _complexParas, _paraSost, 
_sostav, _defectDate, _defectType, _flagPhone, _phone1, _placeSet1, _flagState1, _numP1, _spPhone, _resLdPhone, _resLdStrPhone, 
_resLdStrAbCode, _resLdStrAbName, _phoneServ, _lnkNstd, _flagAvu 
   return _regnC, _koda1, _nrsh1, _flagUst1, _ustNum1, _paraNum2Kl, _regnC2Kl2, _koda2, _nrsh2, _flagUst2, _ustNum2, _paraNum2Kl2, _regnCLnk, 
_kodaLnk, _nrshLnk, _flagUstLnk, _ustNumLnk, _paraNum, _complexParas, _paraSost, _sostav, _defectDate, _defectType, _flagPhone, _phone1, 
_placeSet1, _flagState1, _numP1, _spPhone, _resLdPhone, _resLdStrPhone, _resLdStrAbCode, 
_resLdStrAbName, _phoneServ, _lnkNstd, _flagAvu with resume;
end foreach;
Вот код. Он правильно написан? При проверке server studio ошибки не дает, запускается на выполнение, но после запуска просто идет процес выполнения и результат не выдает. Может я что-то не так написал?
...
Рейтинг: 0 / 0
26.08.2010, 17:56
    #36813834
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Создать функцию с выдачей курсора
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE PROCEDURE test()
RETURNING int,int;
DEFINE r1,r2 int;
 FOREACH cur FOR SELECT  1 , 1  INTO r1,r2 FROM table(set{ 1 , 2 })
    RETURN r1,r2 WITH RESUME;
 END FOREACH;
END PROCEDURE;


CREATE PROCEDURE test1()
RETURNING int,int;
DEFINE r1,r2 int;
 
foreach execute procedure test() into r1,r2
return r1,r2 with resume;
END FOREACH;
END PROCEDURE;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
execute procedure test1();                    


(expression) (expression) 

           1            1
           1            1

2 row(s) retrieved.
...
Рейтинг: 0 / 0
26.08.2010, 18:04
    #36813857
Создать функцию с выдачей курсора
Спасибо.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Создать функцию с выдачей курсора / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]