powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос по PL\SQL и не совсем
5 сообщений из 5, страница 1 из 1
вопрос по PL\SQL и не совсем
    #32051202
Um
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из Си-шной функции вызывается процедура PL\SQL. Есть ли возможность в процессе работы процедуры возвращать в вызывающую функцию какие-то вычисленные значения?
Это нужно например для прогрессбара.
...
Рейтинг: 0 / 0
вопрос по PL\SQL и не совсем
    #32051206
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно попробовать использовать PACKAGE. Описав в теле пакета глобальные переменные можно другой функцией из этого же PACKAGE их считывать. Применимо для одной сессии.
PS: Сам не пробовал. Это с чужих слов.
...
Рейтинг: 0 / 0
вопрос по PL\SQL и не совсем
    #32051207
Um
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет. Прикол в том, чтобы PL/SQL-ная процедура возвращала часть посчитанных данных в Си-шную функцию (из которой была вызвана) до своего окончания. Т.е. грубо говоря есть клиент, на нем запускается функция на СИ, эта функция запускает PL/SQL процедуру, которая обрабатывается на сервере. Управление программой вернется на клиента не раньше, чем выполнится процедура. Так вот, есть ли возможность передать с сервера промежуточные данные на клиента до окнчания процедуры?
...
Рейтинг: 0 / 0
вопрос по PL\SQL и не совсем
    #32051217
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд, иначе как созданией 2-й сесии не получится. Т.е. схема примерно такова: 1-я сессия чего-то делает и периодически "уведомляет" о своей работе через к примеру, pipes, или, если у тебя версия оракла 8.1 и больше, через заполнение некоей таблицы процедурой с pragma pragma autonomous_transaction - это чтобы не мешать основной транзакции. Ну клиент из 2-й сессии читает все это и перерисовывает прогресбар.

Еще 3-й вариант- складывать уведомления через utl_file, это только сейчас в голову пришло. Тогда вроде как 2-я сессия не нужна.
...
Рейтинг: 0 / 0
вопрос по PL\SQL и не совсем
    #32051309
MW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Um

А в чем дело? Загоняешь свою здоровую процедуру в fork или thread (смотря под чем пишешь) тогда управление вернется в программу, кроме того что она что-то твое делает заставить менять ее глобальные переменные. Вызоваешь в цикле другую функцию считывающую эти глобальные переменные и показываешь то что хочешь.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос по PL\SQL и не совсем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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