2011-05-08 32 views
-1
create or replace procedure UPD_DEP 
    (dd_name in dept.dname%type, --department which has to be updated 
    d_name in dept.dname%type) --name to which the first parameter has to be updated 
is 
abc_exception exception; 
begin 
if (dname<>dd_name) THEN 
    raise abc_exception; 
end if; 
update dept 
set dname=d_name 
where dname=dd_name; 
commit; 
EXCEPTION 
WHEN abc_exception THEN 
dbms_output.put_line('department not present which u want to be updated'); 
end upd_dep; 

錯誤:PL/SQL:語句忽略PL/SQL異常在管線9與程序處理

  • 7如果(DNAME <> dd_name)THEN(第7行)
  • 8加註abc_exception; (第8行)
  • 9 end if; (第9行)
  • 10更新部門(第10行)
  • 11組DNAME = d_name(第11行)
+0

請使用大括號按鈕來設置您的問題的格式。 – gbn 2011-05-08 13:07:54

回答

4

在第7行中,將引用dname作爲變量,但沒有變量與名稱。我的第一個假設是你的意思是d_name,這是函數的第二個參數,但這沒有意義,因爲除非兩個值相等,否則你會跳過更新。

根據您在異常處理程序中所做的操作,我猜if是嘗試檢查是否存在要更新的行,並且dname是努力引用表中的實際列。但是你不能僅僅在突發事件中引用PL/SQL代碼中的表列 - 編譯器應該如何理解這個引用?

此外,檢查更新是否會影響任何行的最佳方法是執行此操作並測試結果。

create or replace procedure UPD_DEP 
(dd_name in dept.dname%type, --department which has to be updated 
d_name in dept.dname%type) --name to which the first parameter has to be updated 
is 
begin 

update dept 
set dname=d_name 
where dname=dd_name; 

if SQL%FOUND then 
    commit; 
else 
    dbms_output.put_line('department not present which u want to be updated'); 
end if; 

end upd_dep; 
+0

嗯,它真的真的解決了我的問題。現在一切都運行良好。謝謝alot.May上帝讓你快樂:) – Salar 2011-05-08 13:27:50