Хранимая процедура на IBM я кажется

Мне нужно руководство, как лучше всего это сделать. Я запустил отчет, в котором показаны детали, у которых не было продаж за «последние 2 месяца». Давайте пока предположим, что это будет выполняться в начале каждого месяца. Я сделал это жестко закодированным, и это необходимо автоматизировать для запуска в кристальном отчете. То, как я это сделал, было 4 запроса. первый выбирает предметы, которые «Доступны для продажи» и находятся в инвентаре. Кажется, мы можем легко превратить это в представление.

этот второй здесь выбирает товары, которые были проданы за рассматриваемые 2 месяца. Должна ли это быть хранимая процедура? если да, то у меня нет предыдущего опыта. с SP на IBM i. Но мне кажется сп лучше всего.

Здесь мы выбираем записи, когда были продажи в 4-м или 5-м месяце. это жестко закодировано. Нам нужно сделать это за последние 2 месяца в любое время. если программа выполняется в июне, нам нужно посмотреть на май и апрель. Год должен быть соответствующим. Текущий год, если мы не проводим это в январе-феврале. тогда мы хотим ноябрь-декабрь 2013 года и т. д.

SELECT                                                                  
  ALL       T01.IAPRT#, T01.IA101, T01.IAPRLC, T01.IARCC1, T01.IARCC2,  
            T01.IARCC3, T01.IARCC4, T01.IARCC5, T01.IARCC6, T01.IARCC7, 
            T01.IARCC8, T01.IARCC9, T01.IARC10, T01.IARC11, T01.IARC12, 
            T01.IARC13, T01.IARC14, T01.IARC15, T02.IQYER#, T02.IQA04,  
            T02.IQA05, (T02.IQA04+T02.IQA05) AS TOT45                   
  FROM      ASTDTA.ICPRT1 T01 LEFT OUTER JOIN                           
            ASTDTA.ICSUM1 T02                                           
  ON        T01.IAPRT# = T02.IQPRT#                                     
  WHERE     IAORDF = '1'                                                
    AND     IARCC6 = 'INV'                                              
    AND     T02.IQYER# = 2014                                           
    AND     T02.IQTSCC = 'I'                                            
    AND     (T02.IQA04+T02.IQA05) <> 0                                  
  ORDER BY  T01.IAPRT# ASC                                              

person Adams    schedule 09.06.2014    source источник
comment
Лучшей практикой в ​​целом является хранимая процедура.   -  person Buck Calabro    schedule 09.06.2014
comment
есть ссылка на пример как сделать сп на ibm\i?   -  person Adams    schedule 09.06.2014
comment
...продажи в 4-м или 5-м месяце. Означает ли это, что значения каким-то образом перемещаются влево каждый раз, когда начинается новый месяц?   -  person user2338816    schedule 10.06.2014
comment
Вам понадобится динамический SQL, так что да, вам нужна хранимая процедура. Я бы не стал использовать T02.IQA04 + T02.IQA05 <> 0 — что произойдет, если другой столбец будет отрицательным (поэтому сумма равна 0)? Вызовите отдельные значения соответственно. Самое интересное будет, когда вы запустите это в феврале, и вам нужны продажи из 2 разных строк (декабрь 2013 года, январь 2014 года). Удачи!   -  person Clockwork-Muse    schedule 10.06.2014


Ответы (1)


Создание хранимой процедуры SQL в IBM i очень похоже на создание хранимой процедуры на любой другой платформе. CREATE PROCEDURE — это команда SQL. Вы можете ввести эту команду с помощью команды STRSQL на зеленом экране, графического пользовательского интерфейса IBM i Navigator или IBM i Access for Web. Вы также можете использовать соединение ODBC или JDBC, если хотите.

Все справочные материалы по IBM i можно найти в Центре знаний. v7.1 прямая ссылка на хранимые процедуры: http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/sqlp/rbafysproeg.htm?lang=en Путь навигации: IBM i 7.1 > База данных > Программирование > Программирование SQL > Подпрограммы > Сохраненные процедуры.

person Buck Calabro    schedule 09.06.2014