11.07.2023 07:56
Mtirt
 
Цитата:
olobez Скажите, пожалуйста, как можно посмотреть тело процедуры Rep_OstatkiExpiryDate? Точнее тело этой процедуры я вижу, но она выполняет другую процедуру? Не нашла ни REP_FORMTEMPTABLE ни OSTATKIEXPIRYDATE ни в процедурах, ни в функциях, ни в таблицах. Как набираются остатки со сроками годности?



(0.01Мб)
Есть еще Packages...
У Супермаг+ есть package REP_FORMTEMPTABLE и в нем процедура OSTATKIEXPIRYDATE.
Просмотреть текст напрямую нельзя, он зашифрован средствами oracle.
Если очень надо, то надо искать в интернете и по форуму по слову unwrap.
Ну и надо понимать, что для паккаджей придется разврапить целиком весь паккадж, чтобы посмотреть одну процедуру. Вам точно это надо?
11.07.2023 07:58
Mtirt
 
Цитата:
olobez Если я создам табличную функцию и последовательно выполню:
1. Вызов процедуры Rep_OstatkiExpiryDate&quot
2. SELECT запрос на получение остатков и дат из TTOstExpiryDate
3. ??? Что необходимо сделать чтобы после возврата таблицы из функции TTOstExpiryDate в итоге осталась пустой?
Обычно - сделать commit;
11.07.2023 09:27
olobez
 
Цитата:
Mtirt Есть еще Packages...
У Супермаг+ есть package REP_FORMTEMPTABLE и в нем процедура OSTATKIEXPIRYDATE.
Просмотреть текст напрямую нельзя, он зашифрован средствами oracle.
Если очень надо, то надо искать в интернете и по форуму по слову unwrap.
Ну и надо понимать, что для паккаджей придется разврапить целиком весь паккадж, чтобы посмотреть одну процедуру. Вам точно это надо?
Да, как-то очень сложно. Скорее всего это не, что мне нужно. Всё-таки я склоняюсь к функции, которая будет выполнять процедуру, забирать данные из временной таблицы и возвращать результат.
11.07.2023 09:39
olobez
 
[QUOTE=Mtirt;394229]Обычно - сделать commit;


Commit или Rollback? Ведь до исполнения процедуры эта таблица пустая и такой она должна остаться после получения из неё данных.

Или вы имеете ввиду, что я сама командой должна удалить данные из таблицы и тогда нужен commit?

Скажите, пожалуйста, я правильно понимаю процесс:
1. Создаю функцию, которая может возвращать таблицу
2. Начинаю транзакцию (Не уверена, нужна ли она здесь?)
3. Выполняю процедуру Rep_OstatkiExpiryDate, данные появились в TTOstExpiryDate.
4. Сохраняю данные из TTOstExpiryDate в переменную(?) Тут пока не уверена, но сохранить их куда-то нужно
5. Очищаю руками TTOstExpiryDate
6. Commit

7. Или вместо пунктов 5, 6 - rollback?

8. Возвращаю ту переменную, которая хранит данные.

Я на верном пути? Как лучше с пунктами 5,6,7? Я понимаю, что не всё понимаю)))
11.07.2023 09:52
Mtirt
 
Я же ссылку привела... Там вполне понятный пример
В одной сессии.
Вы выполняете процедуру - таблица заполняется.
Вы выбираете данные (для вставки куда-либо, или просто на экране показать) - данные есть.
Вы пишете commit - темповая таблица очищается.
11.07.2023 14:03
vdm
 
Конкретно TTOstExpiryDate создана в режиме on commit preserve rows.
Т.е. для очистки делайте просто truncate.

Насчет "Сохраняю данные из TTOstExpiryDate в ...".
А вы не можете просто выполнить select с вашей функцией, которая ничего не вернет, а просто заполнит TTOstExpiryDate?
Если последующие select будут выполняться в этой-же сессии, используете данные из нее.
Часовой пояс GMT +3, время: 08:33.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.