2012-12-08 188 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

您的更新語句正在更新整個表。您可能想要「選擇更新」,然後更新「哪裏的電流」。