Примеры оформления кода 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 ;
------------------------------------------------------------------------------