一。直接在在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);这是我所知道的区别,哪位兄弟说说还有什么其他区别???                    

解决方案 »

  1.   

    package用来作为名字空间,就像java/c++中的一个class,这样便于维护。两种过程本质上是一样的。
      

  2.   

    一、是你直接定义了一个过程,可以直接调用的。
    二、是你把这个过程定义在package里面。
    如果内容一样,次过程是没有任何区别的。但是package里面的此过程你可以重载,根据不同的参数来重载此过程。相对来说建议你把过程定义在package中。今后扩展更方便。