2016-08-19 52 views
-1

我想使用存儲過程基於id從表中刪除記錄。 Id值必須作爲參數傳遞。但在嘗試此代碼時,表中的數據不會被刪除。誰能幫我打通這個PL/SQL存儲過程

create or replace procedure PROC_INV_DELETE(num in number) 
is 
begin 

    delete from table_name 
    where id = '&num'; 
    commit; 

end; 
/

回答

1

這將做你的工作:

create or replace procedure PROC_INV_DELETE(num in number) 
is 
begin 

    delete from table_name 
    where id = num; ---No need to use & and '' here 
    commit; 

end; 
/

呼叫:

declare 

a number:= '&num' ; 

Begin 

    PROC_INV_DELETE(a); 

end; 
/
Enter value for num: 4 
old 3: a number:= '&num' ; 
new 3: a number:= '4' ; 

PL/SQL procedure successfully completed. 
+0

不喜歡這樣。在執行程序時它應該向用戶請求動態值。 – Shine

+1

程序保持不變,只有你必須改變你調用它的方式。再次看到我的帖子, – XING

+1

@Anonymous - 程序本身不能交互。這就是爲什麼你需要一個「包裝」。包裝從用戶處獲得值,然後將其傳遞給過程。不要忘記添加異常處理! –