|
вопрос по PL\SQL и не совсем
|
|||
---|---|---|---|
#18+
Из Си-шной функции вызывается процедура PL\SQL. Есть ли возможность в процессе работы процедуры возвращать в вызывающую функцию какие-то вычисленные значения? Это нужно например для прогрессбара. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2002, 09:49 |
|
вопрос по PL\SQL и не совсем
|
|||
---|---|---|---|
#18+
Можно попробовать использовать PACKAGE. Описав в теле пакета глобальные переменные можно другой функцией из этого же PACKAGE их считывать. Применимо для одной сессии. PS: Сам не пробовал. Это с чужих слов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2002, 09:57 |
|
вопрос по PL\SQL и не совсем
|
|||
---|---|---|---|
#18+
Да нет. Прикол в том, чтобы PL/SQL-ная процедура возвращала часть посчитанных данных в Си-шную функцию (из которой была вызвана) до своего окончания. Т.е. грубо говоря есть клиент, на нем запускается функция на СИ, эта функция запускает PL/SQL процедуру, которая обрабатывается на сервере. Управление программой вернется на клиента не раньше, чем выполнится процедура. Так вот, есть ли возможность передать с сервера промежуточные данные на клиента до окнчания процедуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2002, 10:09 |
|
вопрос по PL\SQL и не совсем
|
|||
---|---|---|---|
#18+
На мой взгляд, иначе как созданией 2-й сесии не получится. Т.е. схема примерно такова: 1-я сессия чего-то делает и периодически "уведомляет" о своей работе через к примеру, pipes, или, если у тебя версия оракла 8.1 и больше, через заполнение некоей таблицы процедурой с pragma pragma autonomous_transaction - это чтобы не мешать основной транзакции. Ну клиент из 2-й сессии читает все это и перерисовывает прогресбар. Еще 3-й вариант- складывать уведомления через utl_file, это только сейчас в голову пришло. Тогда вроде как 2-я сессия не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2002, 10:35 |
|
вопрос по PL\SQL и не совсем
|
|||
---|---|---|---|
#18+
2 Um А в чем дело? Загоняешь свою здоровую процедуру в fork или thread (смотря под чем пишешь) тогда управление вернется в программу, кроме того что она что-то твое делает заставить менять ее глобальные переменные. Вызоваешь в цикле другую функцию считывающую эти глобальные переменные и показываешь то что хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2002, 14:05 |
|
|
start [/forum/topic.php?fid=52&fpage=2841&tid=1993080]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
others: | 254ms |
total: | 351ms |
0 / 0 |