zoukankan      html  css  js  c++  java
  • Oracle中执行存储过程call和exec区别

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

    exec pro_name(参数1..); call pro_name(参数1..); 

    区别: 
    1. 但是exec是sqlplus命令,只能在sqlplus中使用;call为SQL命令,没有限制. 

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


    Sql代码 
    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,且要带上()的习惯。
    ---------------------

    exec是sqlplus的命令,只能在sqlplus中使用。

    call是sql命令,任何工具都可以使用,call必须有括号,即例没有参数  

    复制代码
    call必须有括号,即例没有参数  
    idle> connect /as sysdba  
    已连接。  
    sys@PO10>   
    sys@PO10> create procedure p_test is   
      2  begin  
      3    null;  
      4  end;  
      5  /  
    过程已创建。  
    sys@PO10>   
    sys@PO10> exec p_test  
    PL/SQL 过程已成功完成。  
    sys@PO10> call p_test  
      2  ;  
    call p_test  
         *  
    第 1 行出现错误:  
    ORA-06576: 不是有效的函数或过程名  
    sys@PO10> call p_test();  
    调用完成。  
    sys@PO10>  
    exec 只能在SQLPLUS中使用;call可以在任何地方使用 

    区别
    exec是SQL Plus命令,只能在SQL Plus中使用;call为SQL命令,没有限制.
    存储过程或函数没有参数时,exec可以直接跟过程名(可以省略()),但call则必须带上().
    示例
    exec
    调用存储过程
    有参数:exec mypro(12,'fsdf');
    没有参数:exec mypro;,也可以写成exec mypro();
    调用函数
    有参数:var counts number;exec :counts:=myfunc('fsde');
    没有参数:var counts number;exec :counts:=myfunc;,也可以写成var counts number;exec :counts:=myfunc();
    call
    调用存储过程
    有参数:call mypro(23,'fth');
    无参数:call mypro();
    调用函数
    有参数:var counts number;call myfunc('asd') into :counts;
    无参数:var counts number;call myfunc() into :counts;
    其他注意事项
    oracle 中字符串应该是 ” 而不应该是 “”
    每写完一条sql语句应加上 ;
    为了防止call 和 exec 无参数的存储过程或函数的错误,建议全部加上()
    ---------------------

  • 相关阅读:
    POJ3164 Command Network
    UVa11401 Triangle Counting
    UVa11174 Stand in a Line
    UVa11806 Cheerleaders
    Uva11538 Chess Queen
    Bzoj3130 [Sdoi2013]费用流
    Bzoj3262 陌上花开
    模拟25A 题解
    模拟24 题解
    模拟23 题解
  • 原文地址:https://www.cnblogs.com/klb561/p/10574843.html
Copyright © 2011-2022 走看看