2012-12-08 193 views
0

我想创建根据交易类型,其更新事务表的过程,......但我无法更正错误:PL/SQL: Statement ignored 我的代码是:PL/SQL:语句被忽略

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

这就是整个信息?没有关于哪个语句被忽略的数据? – Bohemian

回答

1

我首先想到的是,错误是因为你的表名是transaction这是一个保留字:

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

但情况并非如此。但似乎您要选择的变量bno未被声明。但是,您已经声明了另一个变量ba transaction.balance%TYPE;。很可能,您应该在声明或声明中更新变量名称,以便两者相同。

0

您的更新语句正在更新整个表。您可能想要“选择更新”,然后更新“哪里的电流”。