У меня есть отчет Crystal, который возвращает нужные мне записи на основе критериев, которые я добавил в отчет. Я также хочу, чтобы этот отчет обновлял записи в базе данных при запуске. Для этого я создал процедуру (в оракуле) ниже. Как мне заставить это работать? Мне действительно нужна только та часть, которая обновляет записи для запуска в процедуре. Это возможно? имеется в виду, могу ли я запустить процедуру из того же отчета, который я создаю, как обычно (используя select expert)? Я как бы прослеживаю оценку обновления между статьями, которые возвращают записи, поскольку мое исследование показывает, что я не могу просто запустить часть обновления из кристалла. когда я пытаюсь использовать процедуру, описанную ниже, кристалл выдает неверный аргумент при условии ошибки.
create or replace Procedure "P_UPDATE_REPORT_DATE_2" (
N_BEGIN IN date,
N_END IN date)
is
CUS_ID NUMBER;
cursor c1 is select customer_id FROM customer;
begin
--real begining
update dbo.customer set REPORT_DATE= sysdate
where customer.customer_id in
(SELECT customer.custoemr_id
FROM dbo.CUS_ADDRESS CUS_ADDRESS INNER JOIN (((dbo.CUS_ASSOC_V
CUS_ASSOC_V INNER JOIN dbo.customer customer ON
CUS_ASSOC_V.ASSOC_ID=customer.ASSOC_ID) INNER JOIN dbo.ITEM ITEM ON
CUSTOMER.ITEM_NUMBER=ITEM.ITEM_NUMBER) LEFT OUTER JOIN
dbo.PAY_TYPE_CODE PAY_TYPE_CODE ON
CUSTOMER.PRIM_PAY=PAY_TYPE_CODE.CODE) ON
ITEM_ADDRESS.ADDRESS_ID=ITEM.ITEM_ADDRESS_ID
WHERE CUSTOMER.FACILITY='CHI'
AND CUSTOMER.START_DATE<= N_END
AND CUSTOMER.END_DATE>= N_BEGIN
AND CUSTOMER.CUSTOMER_TYPE_CODE='O');
commit;
--fake to create sandwich
OPEN c1;
LOOP
FETCH c1 INTO CUS_ID;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(CUS_ID);
END LOOP;
end "P_UPDATE_REPORT_DATE_2";