05.07.2023 08:54
Mtirt
 
Там выше есть процедура заполнения временных таблиц
Код:
   // заполняем временные таблицы
      RepOracleRunner.ExecuteProcedure(host.Connection,"Supermag.Rep_OstatkiExpiryDate", 
        Report.GetParameterValue("P_IN_PRICE"),
        Report.GetParameterValue("P_TOVARALL"),
        Report.GetParameterValue("P_DAY"));
Чтобы в TTOstExpiryDate что-то было, надо ее выполнить.
05.07.2023 09:27
olobez
 
Цитата:
Mtirt Там выше есть процедура заполнения временных таблиц
Код:
   // заполняем временные таблицы
      RepOracleRunner.ExecuteProcedure(host.Connection,"Supermag.Rep_OstatkiExpiryDate", 
        Report.GetParameterValue("P_IN_PRICE"),
        Report.GetParameterValue("P_TOVARALL"),
        Report.GetParameterValue("P_DAY"));
Чтобы в TTOstExpiryDate что-то было, надо ее выполнить.
Я правильно понимаю - файл с отчетом - это какой-то общий шаблон? Или откуда этот кусок кода?
Может, вы мне тогда подскажите, что нужно передать процедуре под параметрами P_IN_PRICE, P_TOVARALL, P_DAY?
Я вижу, что это должны быть числа. Для фильтрации? P_IN_PRICE и P_TOVARALL по типу True - False (1 - 0), а P_DAY - дата, переведенная в число?
05.07.2023 09:52
Mtirt
 
Файл с отчетом - файл с расширением frx, лежит в каталоге Reports Супермага.
Кусок кода расположен ровно строкой выше приведенного вами запроса



(0.08Мб)

А еще чуть выше расположено описание параметров процедуры (ну, точнее, из этого можно сделать выводы).
06.07.2023 05:36
olobez
 
Цитата:
Mtirt Файл с отчетом - файл с расширением frx, лежит в каталоге Reports Супермага.
Кусок кода расположен ровно строкой выше приведенного вами запроса



(0.08Мб)

А еще чуть выше расположено описание параметров процедуры (ну, точнее, из этого можно сделать выводы).
Благодаря вам смогла продвинуться вперед. Я выполнила процедуру `CALL Rep_OstatkiExpiryDate(0, 0, 100)` и таблица TTOstExpiryDate действительно наполнилась данными.
И у меня несколько вопросов:
Первый 0 - это P_IN_PRICE: показывать ли цены последних приходов. Есть такая возможность поставить галочку в отчете.
Второй 0 - это P_TOVARALL: все товары (1 - только просроченные, 2 - со сроком годности до D_DAY дней). Рис. 1
100 - это D_DAY: вот этот параметр я поставила наобум и я не совсем понимаю, что значит "срок годности до 100 дней".

По сути, мне нужны просто все товары по всем местам хранения без этого ограничения "срок годности до 100 дней". Но при попытке выполнить процедуру без этого параметра была ошибка.
Что значит это число? Может вместо 100 указывать какое-нибудь очень большое?

И, наверно, самый главный вопрос, что меня интересует, я бы даже сказала волнует. После выполнения процедуры таблица заполнилась данными. Я начала искать информацию про Oracle и хранимые процедуры и нашла, что обычно "данные из таблицы удаляются автоматом при завершении транзакции или при завершении сессии (зависит от опций создания)." Еще раз внимательно посмотрела на файл и в нём действительно есть команда начала транзакции. Рис. 2
Т.е. когда отчет сформирован, если я правильно понимаю, завершается транзакция и таблица TTOstExpiryDate остаётся пустой. Чтобы проверить это я попыталась закрыть Oracle SQL Developer и действительно появился вопрос: вы внесли изменения в БД, хотите commit или rollback? Конечно, rollback. Перезашла в базу - таблица пустая.

Как можно выполнить SQL запрос, который неразрывно состоит из выполнения хранимой процедуры и запроса SELECT из таблицы, которая заполнилась во время выполнения процедуры? Получить данные, но чтобы таблица фактически оставалась пустой.



(0Мб)


(0.01Мб)
06.07.2023 09:17
Tiger
 
Цитата:
olobez 100 - это D_DAY: вот этот параметр я поставила наобум и я не совсем понимаю, что значит "срок годности до 100 дней".
Отбираются товары со сроком годности не больше заданного количества дней. Это те товары, у которых разность между датой Годен до и текущей датой не превышает заданного количества дней.
06.07.2023 12:00
Mtirt
 
Цитата:
olobez Благодаря вам смогла продвинуться вперед. Я выполнила процедуру `CALL Rep_OstatkiExpiryDate(0, 0, 100)` и таблица TTOstExpiryDate действительно наполнилась данными.
И у меня несколько вопросов:
Первый 0 - это P_IN_PRICE: показывать ли цены последних приходов. Есть такая возможность поставить галочку в отчете.
Второй 0 - это P_TOVARALL: все товары (1 - только просроченные, 2 - со сроком годности до D_DAY дней). Рис. 1
100 - это D_DAY: вот этот параметр я поставила наобум и я не совсем понимаю, что значит "срок годности до 100 дней".
D_Day - отберутся товары, у которых срок годности выйдет в течении D_Day дней.
Цитата:
olobez По сути, мне нужны просто все товары по всем местам хранения без этого ограничения "срок годности до 100 дней". Но при попытке выполнить процедуру без этого параметра была ошибка.
Что значит это число? Может вместо 100 указывать какое-нибудь очень большое?
0 - тоже число. Можно его указать в качестве параметра.

Цитата:
olobez И, наверно, самый главный вопрос, что меня интересует, я бы даже сказала волнует. После выполнения процедуры таблица заполнилась данными. Я начала искать информацию про Oracle и хранимые процедуры и нашла, что обычно "данные из таблицы удаляются автоматом при завершении транзакции или при завершении сессии (зависит от опций создания)." Еще раз внимательно посмотрела на файл и в нём действительно есть команда начала транзакции. Рис. 2
Т.е. когда отчет сформирован, если я правильно понимаю, завершается транзакция и таблица TTOstExpiryDate остаётся пустой. Чтобы проверить это я попыталась закрыть Oracle SQL Developer и действительно появился вопрос: вы внесли изменения в БД, хотите commit или rollback? Конечно, rollback. Перезашла в базу - таблица пустая.

Как можно выполнить SQL запрос, который неразрывно состоит из выполнения хранимой процедуры и запроса SELECT из таблицы, которая заполнилась во время выполнения процедуры? Получить данные, но чтобы таблица фактически оставалась пустой.



(0Мб)


(0.01Мб)
Для этого, наверное, надо узнать где вы в в дальнейшем будете выполнять код, состоящий из Хранимой процедуры и выборки из темповой таблицы.
07.07.2023 00:13
olobez
 
Цитата:
Mtirt D_Day - отберутся товары, у которых срок годности выйдет в течении D_Day дней.

0 - тоже число. Можно его указать в качестве параметра.


Для этого, наверное, надо узнать где вы в в дальнейшем будете выполнять код, состоящий из Хранимой процедуры и выборки из темповой таблицы.
В дальнейшем этот запрос буду использовать в Power BI. Но в нём нельзя выполнить процедуру, а затем SQL запрос (так же как использовать переменные, циклы и вот это вот всё, можно только SELECT запрос).
Поэтому подумываю всё это положить в какую-нибудь функцию (табличную?) и в Power BI уже просто вызывать функцию (функции он позволяет использовать) и получать данные.
07.07.2023 06:52
Mtirt
 
Ну да, написать функцию или процедуру, в которой последовательно выполнять необходимые запросы (их может быть несколько).
11.07.2023 07:10
olobez
 
Скажите, пожалуйста, как можно посмотреть тело процедуры Rep_OstatkiExpiryDate? Точнее тело этой процедуры я вижу, но она выполняет другую процедуру? Не нашла ни REP_FORMTEMPTABLE ни OSTATKIEXPIRYDATE ни в процедурах, ни в функциях, ни в таблицах. Как набираются остатки со сроками годности?



(0.01Мб)
11.07.2023 07:22
olobez
 
Цитата:
Mtirt Ну да, написать функцию или процедуру, в которой последовательно выполнять необходимые запросы (их может быть несколько).
Если я создам табличную функцию и последовательно выполню:
1. Вызов процедуры Rep_OstatkiExpiryDate&quot
2. SELECT запрос на получение остатков и дат из TTOstExpiryDate
3. ??? Что необходимо сделать чтобы после возврата таблицы из функции TTOstExpiryDate в итоге осталась пустой?
Часовой пояс GMT +3, время: 06:25.

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