Примеры оформления кода PL/SQL


Приятно работать с красивым и хорошо документированным кодом. Разработчикам, по-хорошему нужно договориться о правилах и строго им следовать.

Ниже привожу примеры оформления кода, который лично мне показались достаточно приятными для моих глаз.

Спецификация пакета

CREATE OR REPLACE PACKAGE CHECK_PAK IS

/******************************************************************************

   ИМЯ:      CHECK_PAK
   ОПИСАНИЕ: Набор функций для интерфейса по взаимодействию *******************
******************************************************************************/

или

  ------------------------------------------------------------------------------
  -- Author  : Камов L
  -- Created : 07.12.2004 12:22:43
  -- Modified: 04.07.2005 17:25:43
  -- Purpose : Пакет для проверки параметров договора
  ------------------------------------------------------------------------------

Тело пакета

CREATE OR REPLACE PACKAGE BODY CHECK_PAK IS
/******************************************************************************
   NAME:      CHECK_PAK
   PURPOSE:   Набор функций для интерфейса по взаимодействию *********

   REVISIONS:
   Ver        Date        Author           Description
   ---------  ----------  ---------------  ------------------------------------
   1.00       04.02.2009  Климов А.А.    Создан


*****


   1.35       23.08.2010  Крабов А.А.    Добавлена функция Blank.
*******************************************************************************/

Запись

  ------------------------------------------------------------------------------
  /*
  * запись параметра поиска
  *
  * @param p_type  тип параметра
  * @param p_value значение параметра
  */
  type t_rec_risk
       is record
       ( p_risk        my_chema_name.insurance_risk.insurance_risk_id%TYPE
       , p_RiskName    my_chema_name.insurance_risk.insurance_risk_name%TYPE
       , p_InsSumm     NUMBER(20,5)
       ) ;

Список

  ------------------------------------------------------------------------------
  /*
  * список параметров поиска
  */
  type r_lst_parametr
       is table of t_rec_parameter
       index by BINARY_INTEGER ;
  ------------------------------------------------------------------------------

Список в теле пакета

  /* Пустой список параметров */
  gv_ListEmpty         r_lst_parametr ;
  /* Пустой список ошибок */
  gv_ErrEmpty          r_lst_error    ;
  /* Пустой список рисков */
  gv_RiskEmpty         r_lst_risk     ;
  ----------------------------------------

функция в спецификации пакета

  ------------------------------------------------------------------------------
  /* Добавление параметра в список
  *
  * Purpose:
  *
  *
  * @param  p_ParamList     список параметров
  * @param  p_ParamType     тип параметра
  * -- 1  - Группа
  * -- 2  - Количество лет эксплуатации
  * -- 3  - Действительная стоимость
  * -- 4  - Идентификатор места хранения
  * -- 5  - Противоугонные средства
  * больше 5 - Стоимость противоугонной системы
  * @param  p_ParamValue    значение параметра
  * @param  p_ParamMeasure  единица измерения
  * @param  p_ContractDate  дата оформления
  * @return  1 - Стандартная форма
  * @return  0 - Нестандартная форма
  * @return -1 - Недостаточно данных для проверки
  * @return -2 - Нестандартная форма и недостаточно данных для полной проверки
  * @return -3 - Ошибка при получении данных
  * @return NULL - Ошибка не обработана
  */
  function get_ParamToList
  ------------------------------------------------------------------------------
          ( p_ParamList     IN OUT r_lst_parametr -- список параметров
          , p_ParamType     IN     VARCHAR2       -- тип параметра
          , p_ParamValue    IN     VARCHAR2       -- значение параметра
          , p_ParamMeasure  IN     VARCHAR2       -- единица измерения
          , p_ContractDate  IN     DATE           -- дата оформления
          ) return NUMBER ;
  ------------------------------------------------------------------------------

Процедура в спецификации пакета

  ------------------------------------------------------------------------------
  /*
  * Первичный расчет и запись графика оплаты договора
  *
  * @param   p_Contract             идентификатор контракта
  * @param   p_Premium              размер премии
  * @param   p_Currency             валюта договора
  * @param   p_PaymentPeriod        периодичность оплаты
  * @param   p_PaymentType          тип платежа
  * @param   p_ValidityDate         дата вступления договора в силу
  * @param   p_StartDate            дата начала действия договора
  * @param   p_EndDate              дата окончания действия договора
  */
  procedure WriteNewPremium
  -- первичный расчет и запись премий
  ------------------------------------------------------------------------------
          ( p_Contract      IN     my_chema_name.contract.contract_id%TYPE
          , p_Premium       IN     my_chema_name.premium.premium_amount%TYPE
          , p_Currency      IN     my_chema_name.currency.currency%TYPE
          , p_PaymentPeriod IN     my_chema_name.payment_information.payment_period%TYPE
          , p_PaymentType   IN     my_chema_name.payment_information.payment_type%TYPE
          , p_ValidityDate  IN     DATE
          , p_StartDate     IN     DATE
          , p_EndDate       IN     DATE
          ) ;
  ------------------------------------------------------------------------------

Функция в теле пакета

 ------------------------------------------------------------------------------
  -- Function and procedure implementations
  ------------------------------------------------------------------------------
  ------------------------------------------------------------------------------
  function get_ParameterFromList
  -- Получение флагов достаточности условий хранения
  ------------------------------------------------------------------------------
          ( p_ParamList     IN     r_lst_parametr -- список параметров
          , p_ParamCode     IN     VARCHAR2       -- код параметра
          , p_Position      IN OUT BINARY_INTEGER -- начало поиска
          ) return VARCHAR2
  ------------------------------------------------------------------------------
  is
    v_Result                       VARCHAR2(30)   ;
  begin

    v_Result := NULL ;

	***********************

    return v_Result ;
  end get_ParameterFromList ;
  ------------------------------------------------------------------------------