PL / SQL:语句被忽略

时间:2012-12-08 07:34:51

标签: oracle plsql

我正在尝试创建一个根据事务类型更新事务表的过程...但我无法更正错误: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;

2 个答案:

答案 0 :(得分:1)

我首先认为错误是因为您的表名是transaction这是一个保留字:

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

但事实并非如此。但似乎没有声明要选择的变量bno。但是,您已声明另一个变量ba transaction.balance%TYPE;。可能,您应该在声明或语句中更新变量名称,以便两者都相同。

答案 1 :(得分:0)

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