我想在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
答案 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信息存储在数据库中。数据库只需要当前的构建和识别其组件版本的方法 - 这就是全部。