# GET_PACKAGE_DOCUMENTATION Function Guide ## Overview `GET_PACKAGE_DOCUMENTATION` is a standalone Oracle PL/SQL function designed to automatically generate comprehensive markdown documentation from Oracle packages. It extracts procedural and function metadata along with embedded comments to create structured documentation. ## Function Details ### Purpose The function parses Oracle package source code and generates formatted markdown documentation, including: - Function and procedure signatures - Parameter information - Usage examples - Return types - Embedded comments with special annotations ### Syntax ```sql GET_PACKAGE_DOCUMENTATION(package_name VARCHAR2, schema_name VARCHAR2) RETURN CLOB ``` ### Parameters | Parameter | Type | Description | |-----------|------|-------------| | `package_name` | VARCHAR2 | Name of the Oracle package to document | | `schema_name` | VARCHAR2 | Schema containing the package | ### Return Type - **CLOB**: Returns formatted markdown documentation as a Character Large Object ## Usage Examples ### Basic Usage ```sql SELECT CT_MRDS.GET_PACKAGE_DOCUMENTATION('FILE_MANAGER', 'CT_MRDS') FROM DUAL; ``` ## Documentation Format The function generates markdown with the following structure: ### Function/Procedure Entries - **Header**: Function/Procedure name as H3 heading - **Description**: Extracted from `@desc` comments - **Return Type**: For functions only - **Parameters Table**: Name, IN/OUT direction, and data type - **Usage Example**: Code from `@example` comments - **Example Result**: Output from `@ex_rslt` comments ### Example Output Format ```markdown ### Function FUNCTION_NAME __Description:__ Function description from comments __Return:__ RETURN_TYPE __Parameters:__ |Name|IN/OUT|Data Type| |----------|----------|----------| |PARAM1 |IN| VARCHAR2| |PARAM2 |OUT| NUMBER| __Example usage:__ ```sql -- Example code ``` __Example result:__ ```sql -- Expected output ``` ``` ## Special Comment Annotations The function recognizes these special comment patterns in package source: | Annotation | Purpose | Example | |------------|---------|---------| | `@name` | Function/procedure name | `-- @name FUNCTION_NAME` | | `@desc` | Description text | `-- @desc Returns formatted data` | | `@example` | Usage example code | `-- @example SELECT func() FROM dual;` | | `@ex_rslt` | Expected result | `-- @ex_rslt 42` | ## Requirements ### Database Privileges The function requires access to these Oracle system views: - `ALL_SOURCE` - For package source code - `ALL_PROCEDURES` - For procedure/function metadata - `ALL_ARGUMENTS` - For parameter information ## Best Practices ### Documentation Standards 1. **Comment Placement**: Place special annotations directly above function/procedure declarations 2. **Example Quality**: Provide realistic, executable examples 3. **Description Clarity**: Write clear, concise descriptions 4. **Parameter Documentation**: Document all parameters with meaningful names ### Usage Recommendations 1. **Output Settings**: Always use appropriate SQL*Plus settings for CLOB output 2. **File Generation**: Redirect output to `.md` files for version control 3. **Regular Updates**: Regenerate documentation when package code changes 4. **Review Process**: Review generated documentation for accuracy ## Troubleshooting ### Common Issues 1. **Truncated Output**: Use proper LINESIZE and LONG settings 2. **Access Denied**: Ensure proper schema privileges 3. **Missing Content**: Verify special comment annotations in source 4. **Formatting Issues**: Check for special characters in comments ### SQL*Plus Settings For complete output, always use: ```sql SET PAGESIZE 0 SET LINESIZE 32000 SET LONG 1000000 ``` ## Integration with Development Workflow ### Version Control - Store generated documentation in repository - Update documentation with each package change - Use consistent naming conventions ### CI/CD Integration The function can be integrated into automated documentation pipelines: 1. Package compilation 2. Documentation generation 3. File output to documentation directory 4. Git commit with package changes ## Conclusion The `GET_PACKAGE_DOCUMENTATION` function provides an automated solution for maintaining up-to-date Oracle package documentation. By leveraging embedded comments and Oracle metadata, it ensures documentation stays synchronized with code changes while providing a consistent, readable format for developers and stakeholders. The function successfully generates comprehensive documentation as demonstrated with the FILE_MANAGER package, producing 626 lines of detailed markdown including function signatures, parameters, examples, and descriptions.