2016-08-19 71 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 - 程序本身不能交互。这就是为什么你需要一个“包装”。包装从用户处获得值,然后将其传递给过程。不要忘记添加异常处理! –