次の属性を持つテーブルを作成しました。
TABLE "VENDORACCOUNT"
( "VEN_ACCOUNTID"
"VEN_REGNO"
"VEN_TXDATE"
"VEN_INVOICE_REFNO"
"TOTALAMOUNT"
"PAID_TOVEN"
"BALANCE"
)
その値に基づいて、別のテーブルからTOTALAMOUNT
列の値を取得します。ここでのシナリオは、列の値が列の値から減算されるというものです。しかし、次に値を選択すると、更新された値が表示されません。以下のレポートに示すように、古い値が表示されます。 POPUP LOV
VEN_INVOICE_REFNO
TOTALAMOUNT
PAID_TOVEN
TOTALAMOUNT
レポートのクエリ:
select "VEN_ACCOUNTID",
"VEN_REGNO" ,
"VEN_TXDATE" ,
"VEN_INVOICE_REFNO" as ,
"TOTALAMOUNT" as ,
"PAID_TOVEN" as ,
TOTALAMOUNT-PAID_TOVEN as "Balance"
from "VENDORACCOUNT"
上記のレポートでは、2 番目のエントリを実行するたびに、減算または更新された値が表示されるようにしたいと考えてい1800
ます。次回はとから金額を引くことができます。2800
4550
9550
1800
4550
このトリガーを作成しました
create or replace trigger "VENDORACCOUNT_T2"
BEFORE
insert or update or delete on "VENDORACCOUNT"
for each row
begin
DECLARE new_balance INT;
DECLARE new_total INT;
DECLARE new_paid INT;
SELECT balance INTO old_balance,
total INTO old_total,
PAID_TOVEN INTO new_paid
FROM vendoraccount
WHERE ven_regno = new.ven_regno
AND VEN_INVOICE_REFNO = new.VEN_INVOICE_REFNO;
UPDATE vendoraccount SET TOTALAMOUNT = old_total + old_balance - new_paid,
balance = TOTALAMOUNT - new_paid
WHERE VEN_REGNO= new.VEN_REGNO
AND VEN_INVOICE_REFNO = new.VEN_INVOICE_REFNO;
end;
そして、このエラーが発生しています:
エラー: PLS-00103: 「次のいずれかを期待しているときに、シンボル「DECLARE」が見つかりました: begin function pragma procedure subtype type current curs'