评论Oracle存储过程

时间:2011-03-15 10:07:45

标签: oracle oracle10g

我想在Oracle中评论类似这样的存储过程

-- MODIFICATION HISTORY
-- Person           Date            Comments
-- ---------        ------          ------------------------------------------
-- MICK             09/15/2010      New Sproc

CREATE OR REPLACE PROCEDURE INTERMISSIONS(
                            p_Myid        IN NUMBER,
                            p_Mytype      IN NUMBER,
                            p_recordset         OUT GET_RESULTS_BY_ID_PKG.get_by_id_cursor)

您如何在Oracle中执行此操作?开发者如何评论SPROC。评论是否位于存储过程中?当有大量的修订版本变化时,这看起来很糟糕,因此寻找最佳实践和建议: - )

谢谢mick

3 个答案:

答案 0 :(得分:8)

注释是远离存储过程的另一个原因,而是使用包。

您可以根据需要对打包过程发表评论,例如:

CREATE OR REPLACE PACKAGE your_package
AS
  --
  -- MODIFICATION HISTORY
  -- Person           Date           Comments
  -- ---------        ------         ------------------------------------------
  -- MICK             09/15/2010     Created new packaged procedure INTERMISSIONS
  --  
  PROCEDURE INTERMISSIONS
  ( p_Myid      IN  NUMBER
  , p_Mytype    IN  NUMBER
  , p_recordset OUT GET_RESULTS_BY_ID_PKG.get_by_id_cursor
  );
END your_package;

的问候,
罗布。

答案 1 :(得分:4)

我总是打包我的程序并在包/ package body语句

之后立即添加包含版本历史记录的注释
CREATE OR REPLACE PACKAGE test_pkg AS
-- 
-- Version History
-- version date      Name  Description
-- 1.0     13/3/2011 pablo initial version
-- 
PROCEDURE proc1

答案 2 :(得分:2)

如果您希望版本信息存储在文件中,那么您可以按原样进行操作。但是如果你想将它存储在数据库中,那么它需要作为实际proc中的注释存在,否则Oracle将不会存储它。

我不知道为什么有人想保留proc中的所有版本历史记录。这不是你的版本控制系统的用途吗?无论如何,历史只是评论,如果你想看到实际的代码更改,你仍然需要回到先前版本的差异。

我通常在声明部分的注释中为版本控制系统设置标签,以便版本控制系统自动更新它。这样我总能看到当前版本是什么,这就足够了。

实际上,在我当前的项目中,我们构建的标准异常处理/日志记录系统从我们的API包中的变量中获取版本信息,以便我们可以将记录的代码错误与软件版本联系起来。变量通过版本控制系统识别的标记自动更新。

e.g。每个包都有以下内容:

 create or replace package body pkg_payment_api as  
   cs_package_name     CONSTANT VARCHAR2(60) :='pkg_payment_api';
   cs_package_version  CONSTANT VARCHAR2(30) := '$Rev: 24992 $';
   cs_package_author   CONSTANT VARCHAR2(30) := '$Author: MBrought $';
   cs_package_date     CONSTANT VARCHAR2(60) := '$Date: 2011-03-08 14:54:48 -0500 (Tue, 08 Mar 2011) $';

   FUNCTION get_package_version
   RETURN varchar2
   IS
   BEGIN
        RETURN 'Version: '||cs_package_version || ' Author: ' ||cs_package_author || ' Timestamp: '||cs_package_date;
   END get_package_version;

该包中的每个公共函数和过程都有一个异常处理程序,它调用一个常见的日志记录例程,该例程将存储异常,时间,版本信息和其他相关信息。

但我无法将所有版本的hisotry信息存储在数据库中。数据库只需要当前的构建和识别其组件版本的方法 - 这就是全部。