2017-03-01 74 views
0

我需要使用pl/sql過程從數據庫中刪除選擇性行。但它會刪除所有行,而不考慮where子句中的內容。從刪除pl/sql過程中的完整表中刪除:ORACLE

The student table is:- 
    id name  class 
    1 danial  9 
    2 patrick  9 
    3 paul   8 

      create or replace procedure delete_student (stId in NUMBER) 
      begin 
        delete from students where class = stId; 
        commit; 
      end; 

我從jsf應用程序發送調用這個過程,比如說9作爲參數。但是,該過程實際上會刪除student表中的所有三行,而不考慮在DBMS_OUT控制檯中正確輸出的參數stId的值。我究竟做錯了什麼。

+0

你確定你通過了9.你有沒有嘗試記錄傳遞的值? – Hawk

+0

是的,先生。 100%。它在我發送時發送9和發送8時發送8,但是在刪除所有三行時無論是8還是9.i甚至在過程中都很困難,它仍然會刪除所有行。 – jaykio77

+1

這很有趣,我沒有複製你的情況。除非正在執行其他語句(除了您向我們展示的內容),否則不應刪除所有行。我還會檢查桌子上是否有觸發器,或等待更多專家的輸入 – Hawk

回答

0

參數的名稱是否與表中列的名稱一致?

將參數和變量命名爲前綴(例如p_,v_)是一種很好的做法,以便在區分列名和變量/參數名稱時SQL語句是明確的。

+0

先生,這意味着我面臨的行爲不是真實的。意味着我的pl/sql過程應該刪除在參數中發送的內容,而不是整個表中的內容?但其實並非如此。 – jaykio77

+0

您能否按照您的建議向我們展示屏幕截圖? – BobC

+0

這個答案應該是一個評論。 – Nitish