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

pl/sql developer7.1的两种存储过程有何区别?
一。直接在在Procedures中定义
CREATE OR REPLACE PROCEDURE Rasdetail_B(V_GROUP_ID IN NUMBER,d1 IN DATE,d2 IN DATE) AS
在form、report中直接调用
  Rasdetail_B(:p_group_id,:d1,:d2);
二。在Packages中定义
例:
先在Packages中/zd_pub_get中定义
              PROCEDURE invgstot_get(
              p_group_id IN NUMBER
              ); 
再在Package bodies/zd_pub_get中定义
        PROCEDURE invgstot_get(
              p_group_id IN NUMBER
          ) is
          begin
            ............................
          end;        
调用时要加上前缀zd_pub_get:
zd_pub_get.invgstot_get(:p_group_id);

这是我所知道的区别,哪位兄弟说说还有什么其他区别???                    
------解决方案--------------------
package用来作为名字空间,就像java/c++中的一个class,这样便于维护。两种过程本质上是一样的。
------解决方案--------------------
一、是你直接定义了一个过程,可以直接调用的。
二、是你把这个过程定义在package里面。
如果内容一样,次过程是没有任何区别的。但是package里面的此过程你可以重载,根据不同的参数来重载此过程。相对来说建议你把过程定义在package中。今后扩展更方便。