0

トランザクションタイプに従ってトランザクションテーブルを更新するプロシージャを作成しようとしています...しかし、エラーを修正できません:PL/SQL: Statement ignored 私のコードは:

create or replace procedure proc(acn transaction.acctno%TYPE, tt transaction.transtype%TYPE, amt transaction.amount%TYPE, bal transaction.balance%TYPE, dt transaction.dot%TYPE)
IS
ano transaction.acctno%TYPE;
ba transaction.balance%TYPE;
BEGIN
select acctno,balance into ano,bno from transaction where accctno=acn;
if tt='W' and bno>500 
then
update transaction set balance=balance-amt;
elsif tt='D'
then
update transaction set balance=balance+amt;
else
dbms_output.put_line('Insufficient balance');
end if;
END;

完全なエラー:

ERROR at line 7: PL/SQL: Statement ignored

5. BEGIN
6. select acctno,balance into ano,bno from transaction where accctno=acn;
7. if tt='W' and bno>500 
8. then
9. update transaction set balance=balance-amt;
4

2 に答える 2

1

transactionテーブル名が予約語であるため、エラーが発生したと最初に考えました:

select * from v$reserved_words where lower(keyword) = 'transaction';

しかし、そうではありません。bnoしかし、選択したい変数が宣言されていないようです。ただし、別の variable を宣言していますba transaction.balance%TYPE;。おそらく、宣言またはステートメントのいずれかで変数名を更新して、両方が同じになるようにする必要があります。

于 2012-12-08T08:20:57.083 に答える
0

あなたの更新ステートメントはテーブル全体を更新しています。おそらく「更新を選択」してから、「現在の場所」を更新する必要があります。

于 2012-12-08T11:41:54.257 に答える