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没有声明要选择的变量。但是,您已经声明了另一个变量ba transaction.balance%TYPE;。很可能,您应该在声明或语句中更新变量名,以使两者相同。

于 2012-12-08T08:20:57.083 回答
0

您的更新语句正在更新整个表。您可能想要“选择更新”,然后更新“当前位置”。

于 2012-12-08T11:41:54.257 回答