powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Создать функцию с выдачей курсора
10 сообщений из 10, страница 1 из 1
Создать функцию с выдачей курсора
    #32098295
Алексc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ посомогите - глядел уже и в хелпах - надо создать функцию в которой делается селект по таблице - и вот этот селект надо выдать из функции. Не нашел как такое изобразить - подскажите - как это оформить...
...
Рейтинг: 0 / 0
Создать функцию с выдачей курсора
    #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
Период между сообщениями больше года.
Создать функцию с выдачей курсора
    #36813376
Подскажите. Ситуация такая же как у Алексса, но источник не запрос, а процедура, которая возвращает несколько строк по нескользо записей в каждой (проще говоря возвращает таблицу). Как правильно оформить foreach?
...
Рейтинг: 0 / 0
Создать функцию с выдачей курсора
    #36813553
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлександрИПодскажите. Ситуация такая же как у Алексса, но источник не запрос, а процедура, которая возвращает несколько строк по нескользо записей в каждой (проще говоря возвращает таблицу). Как правильно оформить foreach?такая же, ага. Вам функция нужна которая будет возвращать строкИ или нет?
...
Рейтинг: 0 / 0
Создать функцию с выдачей курсора
    #36813638
Да. Получается есть 4 функции, каждая из которых возвращает несколько записей с одинаковым количеством столбцов (например return t1, t2, t3 with resume). Необходимо унифицировать вызов этих функций - создать пятую, которая, в зависимости от переданного ей параметра, вызывает одну из первых четывех и выдает данные, которые вернула вызванная функция.
...
Рейтинг: 0 / 0
Создать функцию с выдачей курсора
    #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
Создать функцию с выдачей курсора
    #36813739
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Создать функцию с выдачей курсора
    #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
Создать функцию с выдачей курсора
    #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
Создать функцию с выдачей курсора
    #36813857
Спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Создать функцию с выдачей курсора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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