我正在尝试创建一个根据事务类型更新事务表的过程...但我无法更正错误: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;
答案 0 :(得分:1)
我首先认为错误是因为您的表名是transaction
这是一个保留字:
select * from v$reserved_words where lower(keyword) = 'transaction';
但事实并非如此。但似乎没有声明要选择的变量bno
。但是,您已声明另一个变量ba transaction.balance%TYPE;
。可能,您应该在声明或语句中更新变量名称,以便两者都相同。
答案 1 :(得分:0)
您的更新语句正在更新整个表。您可能想要“选择更新”,然后更新“当前的”。