日期:2014-05-16  浏览次数:20518 次

Oracle中执行存储过程call和exec区别

Oracle中执行存储过程callexec区别

sqlplus中这两种方法都可以使用:

exec pro_name(参数1..);

call pro_name(参数1..);

区别:

1. 但是execsqlplus命令,只能在sqlplus中使用;callSQL命令,没有限制.

2. 存储过程没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上().

?

SQL> --创建过程 插入数据
SQL> create or replace procedure pro1 is
  2  begin --执行部分
  3        insert into mytest values('张三', 'mm');
  4  end;
  5  /
 
Procedure created
 
SQL> exec pro1;
 
PL/SQL procedure successfully completed
 
SQL> call pro1;
 
call pro1
 
ORA-06576: 不是有效的函数或过程名

SQL> call pro1();
 
Method called

?

总结:在调用过程时,应该养成使用call,且要带上()的习惯。

1 楼 hanmiao 前天  
学习了,以前认为这两個命令是完全壹样的,看来还是有些差异的。