レポートに追加した条件に基づいて必要なレコードを返すCrystalレポートがあります。また、このレポートを実行すると、データベースのレコードを更新する必要があります。これを行うには、以下の手順を(Oracleで)作成しました。これをどのように動かすのですか?私は実際には、プロシージャ内でレコードを更新する部分だけが必要です。これは可能ですか?つまり、私が通常行っているのと同じレポート(選択エキスパートを使用して作成する)から手順を実行できますか?私は、私の研究が私がクリスタルから更新部分を実行するだけではないことを示すので、レコードを返すステートメントの間に更新ステートメントを挟み込んでいます。以下のプロシージャを使用しようとすると、クリスタルが無効な引数を指定したエラーをスローします。は、Crystalレポートでレコードを更新する必要があります
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";
レポートでデータを更新したいのはなぜですか? – craig