Add installation script for ODS.FILE_MANAGER_ODS Package Specification v2.2.0
This commit is contained in:
@@ -0,0 +1,46 @@
|
|||||||
|
-- ===================================================================
|
||||||
|
-- MARS-1057: Install ODS.FILE_MANAGER_ODS Package Specification
|
||||||
|
-- ===================================================================
|
||||||
|
-- Purpose: Deploy FILE_MANAGER_ODS package specification v2.2.0
|
||||||
|
-- Author: Grzegorz Michalski
|
||||||
|
-- Date: 2025-11-27
|
||||||
|
-- Package: ODS.FILE_MANAGER_ODS
|
||||||
|
-- Version: 2.1.0 -> 2.2.0
|
||||||
|
-- Changes: Added CREATE_EXTERNAL_TABLES_SET and CREATE_EXTERNAL_TABLES_BATCH wrappers
|
||||||
|
|
||||||
|
SET ECHO ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
PROMPT Installing ODS.FILE_MANAGER_ODS Package Specification v2.2.0...
|
||||||
|
|
||||||
|
@@new_version/FILE_MANAGER_ODS.pkg
|
||||||
|
|
||||||
|
PROMPT Checking for compilation errors...
|
||||||
|
SELECT
|
||||||
|
LINE,
|
||||||
|
POSITION,
|
||||||
|
TEXT AS ERROR_MESSAGE
|
||||||
|
FROM ALL_ERRORS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND TYPE = 'PACKAGE'
|
||||||
|
ORDER BY SEQUENCE;
|
||||||
|
|
||||||
|
PROMPT Verifying package status...
|
||||||
|
SELECT
|
||||||
|
OBJECT_NAME,
|
||||||
|
OBJECT_TYPE,
|
||||||
|
STATUS,
|
||||||
|
TO_CHAR(LAST_DDL_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LAST_MODIFIED
|
||||||
|
FROM ALL_OBJECTS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND OBJECT_NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND OBJECT_TYPE = 'PACKAGE';
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT FILE_MANAGER_ODS Package Specification installation completed.
|
||||||
|
PROMPT
|
||||||
|
|
||||||
|
SET DEFINE ON
|
||||||
|
|
||||||
|
/
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
-- ===================================================================
|
||||||
|
-- MARS-1057: Install ODS.FILE_MANAGER_ODS Package Body
|
||||||
|
-- ===================================================================
|
||||||
|
-- Purpose: Deploy FILE_MANAGER_ODS package body v2.2.0
|
||||||
|
-- Author: Grzegorz Michalski
|
||||||
|
-- Date: 2025-11-27
|
||||||
|
-- Package: ODS.FILE_MANAGER_ODS
|
||||||
|
-- Version: 2.1.0 -> 2.2.0
|
||||||
|
-- Changes: Added CREATE_EXTERNAL_TABLES_SET and CREATE_EXTERNAL_TABLES_BATCH wrapper implementations
|
||||||
|
|
||||||
|
SET ECHO ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
PROMPT Installing ODS.FILE_MANAGER_ODS Package Body v2.2.0...
|
||||||
|
|
||||||
|
@@new_version/FILE_MANAGER_ODS.pkb
|
||||||
|
|
||||||
|
PROMPT Checking for compilation errors...
|
||||||
|
SELECT
|
||||||
|
LINE,
|
||||||
|
POSITION,
|
||||||
|
TEXT AS ERROR_MESSAGE
|
||||||
|
FROM ALL_ERRORS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND TYPE = 'PACKAGE BODY'
|
||||||
|
ORDER BY SEQUENCE;
|
||||||
|
|
||||||
|
PROMPT Verifying package status...
|
||||||
|
SELECT
|
||||||
|
OBJECT_NAME,
|
||||||
|
OBJECT_TYPE,
|
||||||
|
STATUS,
|
||||||
|
TO_CHAR(LAST_DDL_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LAST_MODIFIED
|
||||||
|
FROM ALL_OBJECTS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND OBJECT_NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND OBJECT_TYPE IN ('PACKAGE', 'PACKAGE BODY')
|
||||||
|
ORDER BY OBJECT_TYPE;
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT FILE_MANAGER_ODS Package Body installation completed.
|
||||||
|
PROMPT
|
||||||
|
|
||||||
|
SET DEFINE ON
|
||||||
|
|
||||||
|
/
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
-- ===================================================================
|
||||||
|
-- MARS-1057: Rollback ODS.FILE_MANAGER_ODS Package Body
|
||||||
|
-- ===================================================================
|
||||||
|
-- Purpose: Restore FILE_MANAGER_ODS package body to v2.1.0
|
||||||
|
-- Author: Grzegorz Michalski
|
||||||
|
-- Date: 2025-11-27
|
||||||
|
-- Package: ODS.FILE_MANAGER_ODS
|
||||||
|
-- Version: 2.2.0 -> 2.1.0 (rollback)
|
||||||
|
|
||||||
|
SET ECHO ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
PROMPT Rolling back ODS.FILE_MANAGER_ODS Package Body to v2.1.0...
|
||||||
|
|
||||||
|
@@rollback_version/FILE_MANAGER_ODS.pkb
|
||||||
|
|
||||||
|
PROMPT Checking for compilation errors...
|
||||||
|
SELECT
|
||||||
|
LINE,
|
||||||
|
POSITION,
|
||||||
|
TEXT AS ERROR_MESSAGE
|
||||||
|
FROM ALL_ERRORS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND TYPE = 'PACKAGE BODY'
|
||||||
|
ORDER BY SEQUENCE;
|
||||||
|
|
||||||
|
PROMPT Verifying package status...
|
||||||
|
SELECT
|
||||||
|
OBJECT_NAME,
|
||||||
|
OBJECT_TYPE,
|
||||||
|
STATUS,
|
||||||
|
TO_CHAR(LAST_DDL_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LAST_MODIFIED
|
||||||
|
FROM ALL_OBJECTS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND OBJECT_NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND OBJECT_TYPE IN ('PACKAGE', 'PACKAGE BODY')
|
||||||
|
ORDER BY OBJECT_TYPE;
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT FILE_MANAGER_ODS Package Body rollback completed.
|
||||||
|
PROMPT
|
||||||
|
|
||||||
|
SET DEFINE ON
|
||||||
|
|
||||||
|
/
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
-- ===================================================================
|
||||||
|
-- MARS-1057: Rollback ODS.FILE_MANAGER_ODS Package Specification
|
||||||
|
-- ===================================================================
|
||||||
|
-- Purpose: Restore FILE_MANAGER_ODS package specification to v2.1.0
|
||||||
|
-- Author: Grzegorz Michalski
|
||||||
|
-- Date: 2025-11-27
|
||||||
|
-- Package: ODS.FILE_MANAGER_ODS
|
||||||
|
-- Version: 2.2.0 -> 2.1.0 (rollback)
|
||||||
|
|
||||||
|
SET ECHO ON
|
||||||
|
SET DEFINE OFF
|
||||||
|
|
||||||
|
PROMPT Rolling back ODS.FILE_MANAGER_ODS Package Specification to v2.1.0...
|
||||||
|
|
||||||
|
@@rollback_version/FILE_MANAGER_ODS.pkg
|
||||||
|
|
||||||
|
PROMPT Checking for compilation errors...
|
||||||
|
SELECT
|
||||||
|
LINE,
|
||||||
|
POSITION,
|
||||||
|
TEXT AS ERROR_MESSAGE
|
||||||
|
FROM ALL_ERRORS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND TYPE = 'PACKAGE'
|
||||||
|
ORDER BY SEQUENCE;
|
||||||
|
|
||||||
|
PROMPT Verifying package status...
|
||||||
|
SELECT
|
||||||
|
OBJECT_NAME,
|
||||||
|
OBJECT_TYPE,
|
||||||
|
STATUS,
|
||||||
|
TO_CHAR(LAST_DDL_TIME, 'YYYY-MM-DD HH24:MI:SS') AS LAST_MODIFIED
|
||||||
|
FROM ALL_OBJECTS
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND OBJECT_NAME = 'FILE_MANAGER_ODS'
|
||||||
|
AND OBJECT_TYPE = 'PACKAGE';
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT FILE_MANAGER_ODS Package Specification rollback completed.
|
||||||
|
PROMPT
|
||||||
|
|
||||||
|
SET DEFINE ON
|
||||||
|
|
||||||
|
/
|
||||||
@@ -1,32 +1,37 @@
|
|||||||
# MARS-1057: Batch External Table Creation
|
# MARS-1057: Batch External Table Creation
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
This MARS package adds batch external table creation capabilities to the FILE_MANAGER package, enabling automatic creation of external table sets (INBOX, ODS, ARCHIVE) based on A_SOURCE_FILE_CONFIG metadata.
|
This MARS package adds batch external table creation capabilities to the FILE_MANAGER and FILE_MANAGER_ODS packages, enabling automatic creation of external table sets (INBOX, ODS, ARCHIVE) based on A_SOURCE_FILE_CONFIG metadata.
|
||||||
|
|
||||||
**Jira Issue:** MARS-1057
|
**Jira Issue:** MARS-1057
|
||||||
**Package Version:** FILE_MANAGER 3.4.0
|
**Package Version:** FILE_MANAGER 3.4.0, FILE_MANAGER_ODS 2.2.0
|
||||||
**Author:** Grzegorz Michalski
|
**Author:** Grzegorz Michalski
|
||||||
**Date:** 2025-11-27
|
**Date:** 2025-11-27
|
||||||
|
|
||||||
## Contents
|
## Contents
|
||||||
- `install_mars1057.sql` - Master installation script with SPOOL logging
|
- `install_mars1057.sql` - Master installation script with SPOOL logging
|
||||||
- `rollback_mars1057.sql` - Master rollback script
|
- `rollback_mars1057.sql` - Master rollback script
|
||||||
- `01_MARS_1057_install_CT_MRDS_FILE_MANAGER_SPEC.sql` - Install package specification
|
- `01_MARS_1057_install_CT_MRDS_FILE_MANAGER_SPEC.sql` - Install FILE_MANAGER package specification
|
||||||
- `02_MARS_1057_install_CT_MRDS_FILE_MANAGER_BODY.sql` - Install package body
|
- `02_MARS_1057_install_CT_MRDS_FILE_MANAGER_BODY.sql` - Install FILE_MANAGER package body
|
||||||
- `91_MARS_1057_rollback_CT_MRDS_FILE_MANAGER_BODY.sql` - Rollback package body
|
- `03_MARS_1057_install_ODS_FILE_MANAGER_ODS_SPEC.sql` - Install FILE_MANAGER_ODS package specification
|
||||||
- `92_MARS_1057_rollback_CT_MRDS_FILE_MANAGER_SPEC.sql` - Rollback package specification
|
- `04_MARS_1057_install_ODS_FILE_MANAGER_ODS_BODY.sql` - Install FILE_MANAGER_ODS package body
|
||||||
|
- `91_MARS_1057_rollback_CT_MRDS_FILE_MANAGER_SPEC.sql` - Rollback FILE_MANAGER package specification
|
||||||
|
- `92_MARS_1057_rollback_CT_MRDS_FILE_MANAGER_BODY.sql` - Rollback FILE_MANAGER package body
|
||||||
|
- `93_MARS_1057_rollback_ODS_FILE_MANAGER_ODS_BODY.sql` - Rollback FILE_MANAGER_ODS package body
|
||||||
|
- `94_MARS_1057_rollback_ODS_FILE_MANAGER_ODS_SPEC.sql` - Rollback FILE_MANAGER_ODS package specification
|
||||||
- `track_package_versions.sql` - Universal package version tracking
|
- `track_package_versions.sql` - Universal package version tracking
|
||||||
- `verify_packages_version.sql` - Universal package verification
|
- `verify_packages_version.sql` - Universal package verification
|
||||||
- `current_version/` - FILE_MANAGER v3.3.0 (before MARS-1057)
|
- `rollback_version/` - FILE_MANAGER v3.3.0, FILE_MANAGER_ODS v2.1.0 (before MARS-1057)
|
||||||
- `new_version/` - FILE_MANAGER v3.4.0 (after MARS-1057)
|
- `new_version/` - FILE_MANAGER v3.4.0, FILE_MANAGER_ODS v2.2.0 (after MARS-1057)
|
||||||
- `.gitignore` - Git exclusions for temporary files
|
- `.gitignore` - Git exclusions for temporary files
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
- Oracle Database 23ai
|
- Oracle Database 23ai
|
||||||
- FILE_MANAGER package v3.3.0 installed
|
- FILE_MANAGER package v3.3.0 installed
|
||||||
|
- FILE_MANAGER_ODS package v2.1.0 installed
|
||||||
- ENV_MANAGER package v3.1.0+ with version tracking
|
- ENV_MANAGER package v3.1.0+ with version tracking
|
||||||
- ADMIN user access for deployment
|
- ADMIN user access for deployment
|
||||||
- ODS.FILE_MANAGER_ODS package available
|
- ODS schema with necessary privileges
|
||||||
|
|
||||||
## New Features
|
## New Features
|
||||||
|
|
||||||
@@ -105,12 +110,36 @@ END;
|
|||||||
- Returns summary (Total/Processed/Failed)
|
- Returns summary (Total/Processed/Failed)
|
||||||
- Comprehensive logging
|
- Comprehensive logging
|
||||||
|
|
||||||
|
### 3. FILE_MANAGER_ODS Wrapper Procedures
|
||||||
|
The ODS.FILE_MANAGER_ODS package now includes DEFINER rights wrappers for the new batch procedures.
|
||||||
|
|
||||||
|
**New Wrappers:**
|
||||||
|
```sql
|
||||||
|
-- Create single external table set via ODS wrapper
|
||||||
|
EXEC ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_SET(
|
||||||
|
pSourceFileConfigKey => 123,
|
||||||
|
pRecreate => FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Create batch external tables via ODS wrapper
|
||||||
|
EXEC ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_BATCH(
|
||||||
|
pSourceKey => 'C2D',
|
||||||
|
pRecreate => FALSE
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Benefits:**
|
||||||
|
- Objects created in ODS schema regardless of execution user
|
||||||
|
- Same functionality as CT_MRDS.FILE_MANAGER with DEFINER rights
|
||||||
|
- Full logging and error handling
|
||||||
|
- Consistent API with original package
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
### Option 1: Master Script (Recommended)
|
### Option 1: Master Script (Recommended)
|
||||||
```powershell
|
```powershell
|
||||||
# IMPORTANT: Execute as ADMIN user
|
# IMPORTANT: Execute as ADMIN user
|
||||||
Get-Content "MARS_Packages/REL01/MARS-1057/install_mars1057.sql" | sql "ADMIN/password@service"
|
Get-Content "MARS_Packages/REL03/MARS-1057/install_mars1057.sql" | sql "ADMIN/password@service"
|
||||||
|
|
||||||
# Log file created: log/INSTALL_MARS_1057_<PDB>_<timestamp>.log
|
# Log file created: log/INSTALL_MARS_1057_<PDB>_<timestamp>.log
|
||||||
```
|
```
|
||||||
@@ -118,30 +147,39 @@ Get-Content "MARS_Packages/REL01/MARS-1057/install_mars1057.sql" | sql "ADMIN/pa
|
|||||||
**Installation Steps:**
|
**Installation Steps:**
|
||||||
1. Install FILE_MANAGER package specification v3.4.0
|
1. Install FILE_MANAGER package specification v3.4.0
|
||||||
2. Install FILE_MANAGER package body v3.4.0
|
2. Install FILE_MANAGER package body v3.4.0
|
||||||
3. Track version in A_PACKAGE_VERSION_TRACKING
|
3. Install FILE_MANAGER_ODS package specification v2.2.0
|
||||||
4. Verify all tracked packages for untracked changes
|
4. Install FILE_MANAGER_ODS package body v2.2.0
|
||||||
|
5. Track versions in A_PACKAGE_VERSION_TRACKING
|
||||||
|
6. Verify all tracked packages for untracked changes
|
||||||
|
|
||||||
### Option 2: Individual Scripts
|
### Option 2: Individual Scripts
|
||||||
```powershell
|
```powershell
|
||||||
# IMPORTANT: Execute as ADMIN user
|
# IMPORTANT: Execute as ADMIN user
|
||||||
Get-Content "01_MARS_1057_install_CT_MRDS_FILE_MANAGER_SPEC.sql" | sql "ADMIN/password@service"
|
Get-Content "01_MARS_1057_install_CT_MRDS_FILE_MANAGER_SPEC.sql" | sql "ADMIN/password@service"
|
||||||
Get-Content "02_MARS_1057_install_CT_MRDS_FILE_MANAGER_BODY.sql" | sql "ADMIN/password@service"
|
Get-Content "02_MARS_1057_install_CT_MRDS_FILE_MANAGER_BODY.sql" | sql "ADMIN/password@service"
|
||||||
|
Get-Content "03_MARS_1057_install_ODS_FILE_MANAGER_ODS_SPEC.sql" | sql "ADMIN/password@service"
|
||||||
|
Get-Content "04_MARS_1057_install_ODS_FILE_MANAGER_ODS_BODY.sql" | sql "ADMIN/password@service"
|
||||||
Get-Content "track_package_versions.sql" | sql "ADMIN/password@service"
|
Get-Content "track_package_versions.sql" | sql "ADMIN/password@service"
|
||||||
Get-Content "verify_packages_version.sql" | sql "ADMIN/password@service"
|
Get-Content "verify_packages_version.sql" | sql "ADMIN/password@service"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Verification
|
## Verification
|
||||||
```sql
|
```sql
|
||||||
-- Check package version
|
-- Check FILE_MANAGER version
|
||||||
SELECT CT_MRDS.FILE_MANAGER.GET_VERSION() FROM DUAL;
|
SELECT CT_MRDS.FILE_MANAGER.GET_VERSION() FROM DUAL;
|
||||||
-- Expected: 3.4.0
|
-- Expected: 3.4.0
|
||||||
|
|
||||||
|
-- Check FILE_MANAGER_ODS version
|
||||||
|
SELECT ODS.FILE_MANAGER_ODS.GET_VERSION() FROM DUAL;
|
||||||
|
-- Expected: 2.2.0
|
||||||
|
|
||||||
-- Check for errors (ADMIN user checks specific schema)
|
-- Check for errors (ADMIN user checks specific schema)
|
||||||
SELECT * FROM ALL_ERRORS
|
SELECT * FROM ALL_ERRORS
|
||||||
WHERE OWNER = 'CT_MRDS' AND NAME = 'FILE_MANAGER';
|
WHERE OWNER IN ('CT_MRDS', 'ODS')
|
||||||
|
AND NAME IN ('FILE_MANAGER', 'FILE_MANAGER_ODS');
|
||||||
-- Expected: No rows
|
-- Expected: No rows
|
||||||
|
|
||||||
-- Verify new procedures exist
|
-- Verify new FILE_MANAGER procedures exist
|
||||||
SELECT procedure_name
|
SELECT procedure_name
|
||||||
FROM ALL_PROCEDURES
|
FROM ALL_PROCEDURES
|
||||||
WHERE OWNER = 'CT_MRDS'
|
WHERE OWNER = 'CT_MRDS'
|
||||||
@@ -149,32 +187,78 @@ WHERE OWNER = 'CT_MRDS'
|
|||||||
AND procedure_name IN ('CREATE_EXTERNAL_TABLES_SET', 'CREATE_EXTERNAL_TABLES_BATCH');
|
AND procedure_name IN ('CREATE_EXTERNAL_TABLES_SET', 'CREATE_EXTERNAL_TABLES_BATCH');
|
||||||
-- Expected: 2 rows
|
-- Expected: 2 rows
|
||||||
|
|
||||||
|
-- Verify new FILE_MANAGER_ODS procedures exist
|
||||||
|
SELECT procedure_name
|
||||||
|
FROM ALL_PROCEDURES
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND object_name = 'FILE_MANAGER_ODS'
|
||||||
|
AND procedure_name IN ('CREATE_EXTERNAL_TABLES_SET', 'CREATE_EXTERNAL_TABLES_BATCH');
|
||||||
|
-- Expected: 2 rows
|
||||||
|
|
||||||
-- Check for untracked changes
|
-- Check for untracked changes
|
||||||
SELECT CT_MRDS.ENV_MANAGER.CHECK_PACKAGE_CHANGES('CT_MRDS', 'FILE_MANAGER') FROM DUAL;
|
SELECT CT_MRDS.ENV_MANAGER.CHECK_PACKAGE_CHANGES('CT_MRDS', 'FILE_MANAGER') FROM DUAL;
|
||||||
-- Expected: OK: Package CT_MRDS.FILE_MANAGER has not changed.
|
-- Expected: OK: Package CT_MRDS.FILE_MANAGER has not changed.
|
||||||
|
|
||||||
|
SELECT CT_MRDS.ENV_MANAGER.CHECK_PACKAGE_CHANGES('ODS', 'FILE_MANAGER_ODS') FROM DUAL;
|
||||||
|
-- Expected: OK: Package ODS.FILE_MANAGER_ODS has not changed.
|
||||||
```
|
```
|
||||||
|
|
||||||
## Rollback
|
## Rollback
|
||||||
```powershell
|
```powershell
|
||||||
# IMPORTANT: Execute as ADMIN user
|
# IMPORTANT: Execute as ADMIN user
|
||||||
Get-Content "MARS_Packages/REL01/MARS-1057/rollback_mars1057.sql" | sql "ADMIN/password@service"
|
Get-Content "MARS_Packages/REL03/MARS-1057/rollback_mars1057.sql" | sql "ADMIN/password@service"
|
||||||
```
|
```
|
||||||
|
|
||||||
**Rollback restores:**
|
**Rollback restores:**
|
||||||
- FILE_MANAGER package specification v3.3.0
|
- FILE_MANAGER package specification v3.3.0
|
||||||
- FILE_MANAGER package body v3.3.0
|
- FILE_MANAGER package body v3.3.0
|
||||||
- Removes CREATE_EXTERNAL_TABLES_SET procedure
|
- FILE_MANAGER_ODS package specification v2.1.0
|
||||||
- Removes CREATE_EXTERNAL_TABLES_BATCH procedure
|
- FILE_MANAGER_ODS package body v2.1.0
|
||||||
|
- Removes CREATE_EXTERNAL_TABLES_SET procedures from both packages
|
||||||
|
- Removes CREATE_EXTERNAL_TABLES_BATCH procedures from both packages
|
||||||
|
|
||||||
## Expected Changes
|
## Expected Changes
|
||||||
- **FILE_MANAGER package**: v3.3.0 → v3.4.0
|
- **FILE_MANAGER package**: v3.3.0 → v3.4.0
|
||||||
- **New procedures**: CREATE_EXTERNAL_TABLES_SET, CREATE_EXTERNAL_TABLES_BATCH
|
- **FILE_MANAGER_ODS package**: v2.1.0 → v2.2.0
|
||||||
- **SPEC size**: +3.3 KB (declaration and documentation)
|
- **New procedures in FILE_MANAGER**: CREATE_EXTERNAL_TABLES_SET, CREATE_EXTERNAL_TABLES_BATCH
|
||||||
- **BODY size**: +8.6 KB (implementation with logging)
|
- **New procedures in FILE_MANAGER_ODS**: CREATE_EXTERNAL_TABLES_SET, CREATE_EXTERNAL_TABLES_BATCH
|
||||||
|
- **FILE_MANAGER SPEC size**: +3.3 KB (declaration and documentation)
|
||||||
|
- **FILE_MANAGER BODY size**: +8.6 KB (implementation with logging)
|
||||||
|
- **FILE_MANAGER_ODS SPEC size**: +2.8 KB (wrapper declarations)
|
||||||
|
- **FILE_MANAGER_ODS BODY size**: +4.5 KB (wrapper implementations)
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
### Test 1: Create Single Set
|
### Test 1: Create Single Set (CT_MRDS.FILE_MANAGER)
|
||||||
|
```sql
|
||||||
|
BEGIN
|
||||||
|
CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_SET(
|
||||||
|
pSourceFileConfigKey => 123
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
|
-- Verify tables created
|
||||||
|
SELECT table_name
|
||||||
|
FROM ALL_TABLES
|
||||||
|
WHERE OWNER = 'ODS'
|
||||||
|
AND (table_name LIKE '%_INBOX'
|
||||||
|
OR table_name LIKE '%_ODS'
|
||||||
|
OR table_name LIKE '%_ARCHIVE');
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 2: Create Single Set (ODS.FILE_MANAGER_ODS)
|
||||||
|
```sql
|
||||||
|
BEGIN
|
||||||
|
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_SET(
|
||||||
|
pSourceFileConfigKey => 123,
|
||||||
|
pRecreate => TRUE
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 3: Batch Creation (CT_MRDS.FILE_MANAGER)
|
||||||
```sql
|
```sql
|
||||||
BEGIN
|
BEGIN
|
||||||
FILE_MANAGER.CREATE_EXTERNAL_TABLES_SET(
|
FILE_MANAGER.CREATE_EXTERNAL_TABLES_SET(
|
||||||
|
|||||||
@@ -36,9 +36,13 @@ PROMPT This script will install FILE_MANAGER package v3.4.0 with new features:
|
|||||||
PROMPT - CREATE_EXTERNAL_TABLES_SET procedure
|
PROMPT - CREATE_EXTERNAL_TABLES_SET procedure
|
||||||
PROMPT - CREATE_EXTERNAL_TABLES_BATCH procedure
|
PROMPT - CREATE_EXTERNAL_TABLES_BATCH procedure
|
||||||
PROMPT
|
PROMPT
|
||||||
|
PROMPT And FILE_MANAGER_ODS package v2.2.0 with wrapper procedures.
|
||||||
|
PROMPT
|
||||||
PROMPT Changes:
|
PROMPT Changes:
|
||||||
PROMPT - FILE_MANAGER package specification (3.3.0 -> 3.4.0)
|
PROMPT - FILE_MANAGER package specification (3.3.0 -> 3.4.0)
|
||||||
PROMPT - FILE_MANAGER package body (3.3.0 -> 3.4.0)
|
PROMPT - FILE_MANAGER package body (3.3.0 -> 3.4.0)
|
||||||
|
PROMPT - FILE_MANAGER_ODS package specification (2.1.0 -> 2.2.0)
|
||||||
|
PROMPT - FILE_MANAGER_ODS package body (2.1.0 -> 2.2.0)
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT Expected Duration: 1-2 minutes
|
PROMPT Expected Duration: 1-2 minutes
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
@@ -68,13 +72,25 @@ PROMPT =========================================================================
|
|||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
PROMPT Step 3: Track Package Version
|
PROMPT Step 3: Install FILE_MANAGER_ODS Package Specification v2.2.0
|
||||||
|
PROMPT =========================================================================
|
||||||
|
@@03_MARS_1057_install_ODS_FILE_MANAGER_ODS_SPEC.sql
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT =========================================================================
|
||||||
|
PROMPT Step 4: Install FILE_MANAGER_ODS Package Body v2.2.0
|
||||||
|
PROMPT =========================================================================
|
||||||
|
@@04_MARS_1057_install_ODS_FILE_MANAGER_ODS_BODY.sql
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT =========================================================================
|
||||||
|
PROMPT Step 5: Track Package Versions
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
@@track_package_versions.sql
|
@@track_package_versions.sql
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
PROMPT Step 4: Verify All Tracked Packages
|
PROMPT Step 6: Verify All Tracked Packages
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
@@verify_packages_version.sql
|
@@verify_packages_version.sql
|
||||||
|
|
||||||
|
|||||||
@@ -1984,7 +1984,7 @@ AS
|
|||||||
|
|
||||||
-- 5. Create INBOX external table
|
-- 5. Create INBOX external table
|
||||||
ENV_MANAGER.LOG_PROCESS_EVENT('Creating INBOX external table: ' || vInboxTableName, 'INFO');
|
ENV_MANAGER.LOG_PROCESS_EVENT('Creating INBOX external table: ' || vInboxTableName, 'INFO');
|
||||||
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
|
CREATE_EXTERNAL_TABLE(
|
||||||
pTableName => vInboxTableName,
|
pTableName => vInboxTableName,
|
||||||
pTemplateTableName => vTemplateTableName,
|
pTemplateTableName => vTemplateTableName,
|
||||||
pPrefix => vInboxPrefix,
|
pPrefix => vInboxPrefix,
|
||||||
@@ -1995,7 +1995,7 @@ AS
|
|||||||
|
|
||||||
-- 6. Create ODS external table
|
-- 6. Create ODS external table
|
||||||
ENV_MANAGER.LOG_PROCESS_EVENT('Creating ODS external table: ' || vOdsTableName, 'INFO');
|
ENV_MANAGER.LOG_PROCESS_EVENT('Creating ODS external table: ' || vOdsTableName, 'INFO');
|
||||||
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
|
CREATE_EXTERNAL_TABLE(
|
||||||
pTableName => vOdsTableName,
|
pTableName => vOdsTableName,
|
||||||
pTemplateTableName => vTemplateTableName,
|
pTemplateTableName => vTemplateTableName,
|
||||||
pPrefix => vOdsPrefix,
|
pPrefix => vOdsPrefix,
|
||||||
@@ -2006,7 +2006,7 @@ AS
|
|||||||
|
|
||||||
-- 7. Create ARCHIVE external table
|
-- 7. Create ARCHIVE external table
|
||||||
ENV_MANAGER.LOG_PROCESS_EVENT('Creating ARCHIVE external table: ' || vArchiveTableName, 'INFO');
|
ENV_MANAGER.LOG_PROCESS_EVENT('Creating ARCHIVE external table: ' || vArchiveTableName, 'INFO');
|
||||||
ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
|
CREATE_EXTERNAL_TABLE(
|
||||||
pTableName => vArchiveTableName,
|
pTableName => vArchiveTableName,
|
||||||
pTemplateTableName => vTemplateTableName,
|
pTemplateTableName => vTemplateTableName,
|
||||||
pPrefix => vArchivePrefix,
|
pPrefix => vArchivePrefix,
|
||||||
|
|||||||
216
MARS_Packages/REL03/MARS-1057/new_version/FILE_MANAGER_ODS.pkb
Normal file
216
MARS_Packages/REL03/MARS-1057/new_version/FILE_MANAGER_ODS.pkb
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
create or replace PACKAGE BODY ODS.FILE_MANAGER_ODS
|
||||||
|
AS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CREATE_EXTERNAL_TABLE - Wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLE (
|
||||||
|
pTableName IN VARCHAR2,
|
||||||
|
pTemplateTableName IN VARCHAR2,
|
||||||
|
pPrefix IN VARCHAR2,
|
||||||
|
pBucketUri IN VARCHAR2 DEFAULT CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
|
||||||
|
pFileName IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pDelimiter IN VARCHAR2 DEFAULT ',',
|
||||||
|
pEncoding IN VARCHAR2 DEFAULT NULL
|
||||||
|
)
|
||||||
|
IS
|
||||||
|
vParameters CT_MRDS.A_PROCESS_LOG.PROCEDURE_PARAMETERS%TYPE;
|
||||||
|
BEGIN
|
||||||
|
-- Log the start of the procedure
|
||||||
|
vParameters := CT_MRDS.ENV_MANAGER.FORMAT_PARAMETERS(
|
||||||
|
SYS.ODCIVARCHAR2LIST(
|
||||||
|
'pTableName => ''' || pTableName || '''',
|
||||||
|
'pTemplateTableName => ''' || pTemplateTableName || '''',
|
||||||
|
'pPrefix => ''' || pPrefix || '''',
|
||||||
|
'pBucketUri => ''' || pBucketUri || '''',
|
||||||
|
'pFileName => ''' || NVL(pFileName, 'NULL') || '''',
|
||||||
|
'pDelimiter => ''' || pDelimiter || '''',
|
||||||
|
'pEncoding => ''' || NVL(pEncoding, 'NULL') || ''''
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Start FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE', 'INFO', vParameters);
|
||||||
|
|
||||||
|
-- Call the original CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE procedure
|
||||||
|
-- This ensures all logic remains centralized in the original package
|
||||||
|
-- and ODS wrapper simply delegates execution with DEFINER rights
|
||||||
|
CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE(
|
||||||
|
pTableName => pTableName,
|
||||||
|
pTemplateTableName => pTemplateTableName,
|
||||||
|
pPrefix => pPrefix,
|
||||||
|
pBucketUri => pBucketUri,
|
||||||
|
pFileName => pFileName,
|
||||||
|
pDelimiter => pDelimiter,
|
||||||
|
pEncoding => pEncoding
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('End FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE', 'INFO', vParameters);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT(
|
||||||
|
'Error in ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE: ' || SQLERRM,
|
||||||
|
'ERROR',
|
||||||
|
vParameters
|
||||||
|
);
|
||||||
|
RAISE;
|
||||||
|
END CREATE_EXTERNAL_TABLE;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CREATE_EXTERNAL_TABLES_SET - Wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_SET
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLES_SET (
|
||||||
|
pSourceFileConfigKey IN NUMBER,
|
||||||
|
pRecreate IN BOOLEAN DEFAULT FALSE
|
||||||
|
)
|
||||||
|
IS
|
||||||
|
vParameters CT_MRDS.A_PROCESS_LOG.PROCEDURE_PARAMETERS%TYPE;
|
||||||
|
vRecreateStr VARCHAR2(10);
|
||||||
|
BEGIN
|
||||||
|
-- Convert BOOLEAN to VARCHAR2 for logging
|
||||||
|
vRecreateStr := CASE WHEN pRecreate THEN 'TRUE' ELSE 'FALSE' END;
|
||||||
|
|
||||||
|
-- Log the start of the procedure
|
||||||
|
vParameters := CT_MRDS.ENV_MANAGER.FORMAT_PARAMETERS(
|
||||||
|
SYS.ODCIVARCHAR2LIST(
|
||||||
|
'pSourceFileConfigKey => ' || pSourceFileConfigKey,
|
||||||
|
'pRecreate => ' || vRecreateStr
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Start FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_SET', 'INFO', vParameters);
|
||||||
|
|
||||||
|
-- Call the original CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_SET procedure
|
||||||
|
-- This ensures all logic remains centralized in the original package
|
||||||
|
-- and ODS wrapper simply delegates execution with DEFINER rights
|
||||||
|
CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_SET(
|
||||||
|
pSourceFileConfigKey => pSourceFileConfigKey,
|
||||||
|
pRecreate => pRecreate
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('End FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_SET', 'INFO', vParameters);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT(
|
||||||
|
'Error in ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_SET: ' || SQLERRM,
|
||||||
|
'ERROR',
|
||||||
|
vParameters
|
||||||
|
);
|
||||||
|
RAISE;
|
||||||
|
END CREATE_EXTERNAL_TABLES_SET;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CREATE_EXTERNAL_TABLES_BATCH - Wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_BATCH
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLES_BATCH (
|
||||||
|
pSourceKey IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pSourceFileId IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pTableId IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pRecreate IN BOOLEAN DEFAULT FALSE
|
||||||
|
)
|
||||||
|
IS
|
||||||
|
vParameters CT_MRDS.A_PROCESS_LOG.PROCEDURE_PARAMETERS%TYPE;
|
||||||
|
vRecreateStr VARCHAR2(10);
|
||||||
|
BEGIN
|
||||||
|
-- Convert BOOLEAN to VARCHAR2 for logging
|
||||||
|
vRecreateStr := CASE WHEN pRecreate THEN 'TRUE' ELSE 'FALSE' END;
|
||||||
|
|
||||||
|
-- Log the start of the procedure
|
||||||
|
vParameters := CT_MRDS.ENV_MANAGER.FORMAT_PARAMETERS(
|
||||||
|
SYS.ODCIVARCHAR2LIST(
|
||||||
|
'pSourceKey => ''' || NVL(pSourceKey, 'NULL') || '''',
|
||||||
|
'pSourceFileId => ''' || NVL(pSourceFileId, 'NULL') || '''',
|
||||||
|
'pTableId => ''' || NVL(pTableId, 'NULL') || '''',
|
||||||
|
'pRecreate => ' || vRecreateStr
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Start FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_BATCH', 'INFO', vParameters);
|
||||||
|
|
||||||
|
-- Call the original CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_BATCH procedure
|
||||||
|
-- This ensures all logic remains centralized in the original package
|
||||||
|
-- and ODS wrapper simply delegates execution with DEFINER rights
|
||||||
|
CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_BATCH(
|
||||||
|
pSourceKey => pSourceKey,
|
||||||
|
pSourceFileId => pSourceFileId,
|
||||||
|
pTableId => pTableId,
|
||||||
|
pRecreate => pRecreate
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('End FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_BATCH', 'INFO', vParameters);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT(
|
||||||
|
'Error in ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_BATCH: ' || SQLERRM,
|
||||||
|
'ERROR',
|
||||||
|
vParameters
|
||||||
|
);
|
||||||
|
RAISE;
|
||||||
|
END CREATE_EXTERNAL_TABLES_BATCH;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
-- PACKAGE VERSION MANAGEMENT FUNCTIONS IMPLEMENTATION
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_VERSION
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN PACKAGE_VERSION;
|
||||||
|
END GET_VERSION;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_BUILD_DATE
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN PACKAGE_BUILD_DATE;
|
||||||
|
END GET_BUILD_DATE;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_AUTHOR
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN PACKAGE_AUTHOR;
|
||||||
|
END GET_AUTHOR;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_BUILD_INFO
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN CT_MRDS.ENV_MANAGER.GET_PACKAGE_VERSION_INFO(
|
||||||
|
pPackageName => 'FILE_MANAGER_ODS',
|
||||||
|
pVersion => PACKAGE_VERSION,
|
||||||
|
pBuildDate => PACKAGE_BUILD_DATE,
|
||||||
|
pAuthor => PACKAGE_AUTHOR
|
||||||
|
);
|
||||||
|
END GET_BUILD_INFO;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_VERSION_HISTORY
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN CT_MRDS.ENV_MANAGER.FORMAT_VERSION_HISTORY(
|
||||||
|
pPackageName => 'FILE_MANAGER_ODS',
|
||||||
|
pVersionHistory => VERSION_HISTORY
|
||||||
|
);
|
||||||
|
END GET_VERSION_HISTORY;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
END FILE_MANAGER_ODS;
|
||||||
|
|
||||||
|
/
|
||||||
168
MARS_Packages/REL03/MARS-1057/new_version/FILE_MANAGER_ODS.pkg
Normal file
168
MARS_Packages/REL03/MARS-1057/new_version/FILE_MANAGER_ODS.pkg
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
create or replace PACKAGE ODS.FILE_MANAGER_ODS
|
||||||
|
AUTHID DEFINER
|
||||||
|
AS
|
||||||
|
/**
|
||||||
|
* FILE_MANAGER_ODS - Wrapper package for CT_MRDS.FILE_MANAGER
|
||||||
|
*
|
||||||
|
* This package serves as a wrapper for CT_MRDS.FILE_MANAGER procedures.
|
||||||
|
* The key difference is that this package uses AUTHID DEFINER instead of
|
||||||
|
* AUTHID CURRENT_USER, which means all objects will be created in the ODS
|
||||||
|
* schema regardless of which user executes the procedures.
|
||||||
|
*
|
||||||
|
* This solves the execution context issue where users need to connect as
|
||||||
|
* ODS user to use CT_MRDS.FILE_MANAGER procedures.
|
||||||
|
*
|
||||||
|
* MARS-1049: Added pEncoding parameter support for CSV character set specification
|
||||||
|
*/
|
||||||
|
|
||||||
|
-- Package Version Information (Semantic Versioning: MAJOR.MINOR.PATCH)
|
||||||
|
PACKAGE_VERSION CONSTANT VARCHAR2(10) := '2.2.0';
|
||||||
|
PACKAGE_BUILD_DATE CONSTANT VARCHAR2(20) := '2025-11-27 15:00:00';
|
||||||
|
PACKAGE_AUTHOR CONSTANT VARCHAR2(100) := 'Grzegorz Michalski';
|
||||||
|
|
||||||
|
-- Version History (Latest changes first)
|
||||||
|
VERSION_HISTORY CONSTANT VARCHAR2(4000) :=
|
||||||
|
'2.2.0 (2025-11-27): MARS-1057 - Added CREATE_EXTERNAL_TABLES_SET and CREATE_EXTERNAL_TABLES_BATCH wrappers for batch external table creation' || CHR(13)||CHR(10) ||
|
||||||
|
'2.1.0 (2025-11-24): MARS-1049 - Added pEncoding parameter support for CSV character set specification' || CHR(13)||CHR(10) ||
|
||||||
|
'2.0.0 (2025-10-22): Added package versioning system using centralized ENV_MANAGER functions' || CHR(13)||CHR(10) ||
|
||||||
|
'1.5.0 (2025-10-12): Enhanced external table creation with official path patterns support' || CHR(13)||CHR(10) ||
|
||||||
|
'1.0.0 (2025-09-20): Initial release with AUTHID DEFINER wrapper for external table creation';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name CREATE_EXTERNAL_TABLE
|
||||||
|
* @desc Creates external tables that can read data from Oracle Cloud Storage.
|
||||||
|
* This is a wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE
|
||||||
|
* but uses DEFINER rights to ensure objects are created in ODS schema.
|
||||||
|
*
|
||||||
|
* MARS-1049: Added support for CSV character set encoding specification
|
||||||
|
* @param pTableName - Name of the external table to create
|
||||||
|
* @param pTemplateTableName - Template table defining the structure
|
||||||
|
* @param pPrefix - Storage path prefix in Oracle Cloud Storage
|
||||||
|
* @param pBucketUri - URI of the target bucket (default: ENV_MANAGER.gvInboxBucketUri)
|
||||||
|
* @param pFileName - Specific file name (optional)
|
||||||
|
* @param pDelimiter - Field delimiter (default: ',')
|
||||||
|
* @param pEncoding - Character set encoding for CSV files (e.g., 'UTF-8', 'WE8MSWIN1252', 'EE8ISO8859P2')
|
||||||
|
* If NULL, no CHARACTERSET clause is added to external table definition
|
||||||
|
* @example EXEC ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
|
||||||
|
* 'C2D_A_UC_DISSEM_METADATA_LOADS_INBOX',
|
||||||
|
* 'CT_ET_TEMPLATES.C2D_A_UC_DISSEM_METADATA_LOADS',
|
||||||
|
* 'INBOX/C2D/UC_DISSEM/A_UC_DISSEM_METADATA_LOADS',
|
||||||
|
* CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
|
||||||
|
* NULL, ',', 'UTF-8'
|
||||||
|
* );
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLE (
|
||||||
|
pTableName IN VARCHAR2,
|
||||||
|
pTemplateTableName IN VARCHAR2,
|
||||||
|
pPrefix IN VARCHAR2,
|
||||||
|
pBucketUri IN VARCHAR2 DEFAULT CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
|
||||||
|
pFileName IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pDelimiter IN VARCHAR2 DEFAULT ',',
|
||||||
|
pEncoding IN VARCHAR2 DEFAULT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name CREATE_EXTERNAL_TABLES_SET
|
||||||
|
* @desc Creates a complete set of 3 external tables (INBOX, ODS, ARCHIVE) for a single configuration
|
||||||
|
* from A_SOURCE_FILE_CONFIG table. Automatically generates table names and paths following
|
||||||
|
* official path patterns. Wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_SET
|
||||||
|
* with DEFINER rights to ensure objects are created in ODS schema.
|
||||||
|
* @param pSourceFileConfigKey - Primary key from A_SOURCE_FILE_CONFIG table
|
||||||
|
* @param pRecreate - If TRUE, drops existing tables before creating new ones; if FALSE, fails if tables exist
|
||||||
|
* @example EXEC ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_SET(
|
||||||
|
* pSourceFileConfigKey => 123,
|
||||||
|
* pRecreate => FALSE
|
||||||
|
* );
|
||||||
|
* @ex_rslt Creates three external tables in ODS schema:
|
||||||
|
* - C2D_A_UC_DISSEM_METADATA_LOADS_INBOX
|
||||||
|
* - C2D_A_UC_DISSEM_METADATA_LOADS_ODS
|
||||||
|
* - C2D_A_UC_DISSEM_METADATA_LOADS_ARCHIVE
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLES_SET (
|
||||||
|
pSourceFileConfigKey IN NUMBER,
|
||||||
|
pRecreate IN BOOLEAN DEFAULT FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name CREATE_EXTERNAL_TABLES_BATCH
|
||||||
|
* @desc Creates external table sets for multiple configurations based on filter criteria.
|
||||||
|
* Processes only INPUT type files from A_SOURCE_FILE_CONFIG. Creates 3 tables per configuration
|
||||||
|
* (INBOX, ODS, ARCHIVE). Wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLES_BATCH
|
||||||
|
* with DEFINER rights to ensure objects are created in ODS schema.
|
||||||
|
* @param pSourceKey - Filter by A_SOURCE_KEY (NULL = all sources)
|
||||||
|
* @param pSourceFileId - Filter by SOURCE_FILE_ID (NULL = all file types)
|
||||||
|
* @param pTableId - Filter by TABLE_ID (NULL = all tables)
|
||||||
|
* @param pRecreate - If TRUE, drops and recreates existing tables; if FALSE, skips if tables exist
|
||||||
|
* @example -- Create all external tables for C2D source
|
||||||
|
* EXEC ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_BATCH(
|
||||||
|
* pSourceKey => 'C2D',
|
||||||
|
* pRecreate => FALSE
|
||||||
|
* );
|
||||||
|
*
|
||||||
|
* -- Recreate all external tables for all sources
|
||||||
|
* EXEC ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLES_BATCH(
|
||||||
|
* pRecreate => TRUE
|
||||||
|
* );
|
||||||
|
* @ex_rslt Returns summary: Total: 10, Processed: 9, Failed: 1
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLES_BATCH (
|
||||||
|
pSourceKey IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pSourceFileId IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pTableId IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pRecreate IN BOOLEAN DEFAULT FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- PACKAGE VERSION MANAGEMENT FUNCTIONS
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_VERSION
|
||||||
|
* @desc Returns the current version number of the FILE_MANAGER_ODS package.
|
||||||
|
* Uses semantic versioning format (MAJOR.MINOR.PATCH).
|
||||||
|
* @example SELECT FILE_MANAGER_ODS.GET_VERSION() FROM DUAL;
|
||||||
|
* @ex_rslt 2.1.0
|
||||||
|
**/
|
||||||
|
FUNCTION GET_VERSION RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_BUILD_DATE
|
||||||
|
* @desc Returns the build date of the FILE_MANAGER_ODS package.
|
||||||
|
* @return VARCHAR2 - Build date in format 'YYYY-MM-DD HH24:MI:SS'
|
||||||
|
* @example SELECT ODS.FILE_MANAGER_ODS.GET_BUILD_DATE() FROM DUAL;
|
||||||
|
*/
|
||||||
|
FUNCTION GET_BUILD_DATE RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_AUTHOR
|
||||||
|
* @desc Returns the author of the FILE_MANAGER_ODS package.
|
||||||
|
* @return VARCHAR2 - Package author name
|
||||||
|
* @example SELECT ODS.FILE_MANAGER_ODS.GET_AUTHOR() FROM DUAL;
|
||||||
|
*/
|
||||||
|
FUNCTION GET_AUTHOR RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_BUILD_INFO
|
||||||
|
* @desc Returns comprehensive build information including version, build date, and author.
|
||||||
|
* Uses centralized ENV_MANAGER.GET_PACKAGE_VERSION_INFO function.
|
||||||
|
* @example SELECT FILE_MANAGER_ODS.GET_BUILD_INFO() FROM DUAL;
|
||||||
|
* @ex_rslt Package: FILE_MANAGER_ODS
|
||||||
|
* Version: 2.2.0
|
||||||
|
* Build Date: 2025-11-27 15:00:00
|
||||||
|
* Author: Grzegorz Michalski
|
||||||
|
**/
|
||||||
|
FUNCTION GET_BUILD_INFO RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_VERSION_HISTORY
|
||||||
|
* @desc Returns complete version history with all releases and changes.
|
||||||
|
* Uses centralized ENV_MANAGER.FORMAT_VERSION_HISTORY function.
|
||||||
|
* @example SELECT FILE_MANAGER_ODS.GET_VERSION_HISTORY() FROM DUAL;
|
||||||
|
* @ex_rslt FILE_MANAGER_ODS Version History:
|
||||||
|
* 2.0.0 (2025-10-22): Added package versioning system...
|
||||||
|
**/
|
||||||
|
FUNCTION GET_VERSION_HISTORY RETURN VARCHAR2;
|
||||||
|
|
||||||
|
END FILE_MANAGER_ODS;
|
||||||
|
|
||||||
|
/
|
||||||
@@ -32,8 +32,10 @@ PROMPT
|
|||||||
PROMPT Changes to be rolled back:
|
PROMPT Changes to be rolled back:
|
||||||
PROMPT - FILE_MANAGER package specification (3.4.0 -> 3.3.0)
|
PROMPT - FILE_MANAGER package specification (3.4.0 -> 3.3.0)
|
||||||
PROMPT - FILE_MANAGER package body (3.4.0 -> 3.3.0)
|
PROMPT - FILE_MANAGER package body (3.4.0 -> 3.3.0)
|
||||||
PROMPT - Remove CREATE_EXTERNAL_TABLES_SET procedure
|
PROMPT - FILE_MANAGER_ODS package specification (2.2.0 -> 2.1.0)
|
||||||
PROMPT - Remove CREATE_EXTERNAL_TABLES_BATCH procedure
|
PROMPT - FILE_MANAGER_ODS package body (2.2.0 -> 2.1.0)
|
||||||
|
PROMPT - Remove CREATE_EXTERNAL_TABLES_SET procedures
|
||||||
|
PROMPT - Remove CREATE_EXTERNAL_TABLES_BATCH procedures
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
|
|
||||||
-- Confirm rollback with user
|
-- Confirm rollback with user
|
||||||
@@ -47,7 +49,13 @@ END;
|
|||||||
/
|
/
|
||||||
WHENEVER SQLERROR CONTINUE
|
WHENEVER SQLERROR CONTINUE
|
||||||
|
|
||||||
-- Execute rollback scripts in REVERSE order (92, 91, not 91, 92)
|
-- Execute rollback scripts in REVERSE order (94, 93, 92, 91)
|
||||||
|
PROMPT
|
||||||
|
PROMPT =========================================================================
|
||||||
|
PROMPT Step 1: Rollback FILE_MANAGER Package Body to v3.3.0
|
||||||
|
PROMPT =========================================================================
|
||||||
|
@@92_MARS_1057_rollback_CT_MRDS_FILE_MANAGER_BODY.sql
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
PROMPT Step 2: Rollback FILE_MANAGER Package Specification to v3.3.0
|
PROMPT Step 2: Rollback FILE_MANAGER Package Specification to v3.3.0
|
||||||
@@ -56,21 +64,25 @@ PROMPT =========================================================================
|
|||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
PROMPT Step 1: Rollback FILE_MANAGER Package Body to v3.3.0
|
PROMPT Step 3: Rollback FILE_MANAGER_ODS Package Body to v2.1.0
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
@@92_MARS_1057_rollback_CT_MRDS_FILE_MANAGER_BODY.sql
|
@@93_MARS_1057_rollback_ODS_FILE_MANAGER_ODS_BODY.sql
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
PROMPT Step 3: Track Rollback Version
|
PROMPT Step 4: Rollback FILE_MANAGER_ODS Package Specification to v2.1.0
|
||||||
|
PROMPT =========================================================================
|
||||||
|
@@94_MARS_1057_rollback_ODS_FILE_MANAGER_ODS_SPEC.sql
|
||||||
|
|
||||||
|
PROMPT
|
||||||
|
PROMPT =========================================================================
|
||||||
|
PROMPT Step 5: Track Rollback Version
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
@@track_package_versions.sql
|
@@track_package_versions.sql
|
||||||
|
|
||||||
PROMPT
|
PROMPT
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
PROMPT Step 4: Verify All Tracked Packages
|
PROMPT Step 6: Verify All Tracked Packages
|
||||||
PROMPT =========================================================================
|
PROMPT =========================================================================
|
||||||
@@verify_packages_version.sql
|
@@verify_packages_version.sql
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
create or replace PACKAGE BODY ODS.FILE_MANAGER_ODS
|
||||||
|
AS
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CREATE_EXTERNAL_TABLE - Wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLE (
|
||||||
|
pTableName IN VARCHAR2,
|
||||||
|
pTemplateTableName IN VARCHAR2,
|
||||||
|
pPrefix IN VARCHAR2,
|
||||||
|
pBucketUri IN VARCHAR2 DEFAULT CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
|
||||||
|
pFileName IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pDelimiter IN VARCHAR2 DEFAULT ',',
|
||||||
|
pEncoding IN VARCHAR2 DEFAULT NULL
|
||||||
|
)
|
||||||
|
IS
|
||||||
|
vParameters CT_MRDS.A_PROCESS_LOG.PROCEDURE_PARAMETERS%TYPE;
|
||||||
|
BEGIN
|
||||||
|
-- Log the start of the procedure
|
||||||
|
vParameters := CT_MRDS.ENV_MANAGER.FORMAT_PARAMETERS(
|
||||||
|
SYS.ODCIVARCHAR2LIST(
|
||||||
|
'pTableName => ''' || pTableName || '''',
|
||||||
|
'pTemplateTableName => ''' || pTemplateTableName || '''',
|
||||||
|
'pPrefix => ''' || pPrefix || '''',
|
||||||
|
'pBucketUri => ''' || pBucketUri || '''',
|
||||||
|
'pFileName => ''' || NVL(pFileName, 'NULL') || '''',
|
||||||
|
'pDelimiter => ''' || pDelimiter || '''',
|
||||||
|
'pEncoding => ''' || NVL(pEncoding, 'NULL') || ''''
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Start FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE', 'INFO', vParameters);
|
||||||
|
|
||||||
|
-- Call the original CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE procedure
|
||||||
|
-- This ensures all logic remains centralized in the original package
|
||||||
|
-- and ODS wrapper simply delegates execution with DEFINER rights
|
||||||
|
CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE(
|
||||||
|
pTableName => pTableName,
|
||||||
|
pTemplateTableName => pTemplateTableName,
|
||||||
|
pPrefix => pPrefix,
|
||||||
|
pBucketUri => pBucketUri,
|
||||||
|
pFileName => pFileName,
|
||||||
|
pDelimiter => pDelimiter,
|
||||||
|
pEncoding => pEncoding
|
||||||
|
);
|
||||||
|
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('End FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE', 'INFO', vParameters);
|
||||||
|
|
||||||
|
EXCEPTION
|
||||||
|
WHEN OTHERS THEN
|
||||||
|
CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT(
|
||||||
|
'Error in ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE: ' || SQLERRM,
|
||||||
|
'ERROR',
|
||||||
|
vParameters
|
||||||
|
);
|
||||||
|
RAISE;
|
||||||
|
END CREATE_EXTERNAL_TABLE;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
-- PACKAGE VERSION MANAGEMENT FUNCTIONS IMPLEMENTATION
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_VERSION
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN PACKAGE_VERSION;
|
||||||
|
END GET_VERSION;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_BUILD_DATE
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN PACKAGE_BUILD_DATE;
|
||||||
|
END GET_BUILD_DATE;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_AUTHOR
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN PACKAGE_AUTHOR;
|
||||||
|
END GET_AUTHOR;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_BUILD_INFO
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN CT_MRDS.ENV_MANAGER.GET_PACKAGE_VERSION_INFO(
|
||||||
|
pPackageName => 'FILE_MANAGER_ODS',
|
||||||
|
pVersion => PACKAGE_VERSION,
|
||||||
|
pBuildDate => PACKAGE_BUILD_DATE,
|
||||||
|
pAuthor => PACKAGE_AUTHOR
|
||||||
|
);
|
||||||
|
END GET_BUILD_INFO;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
FUNCTION GET_VERSION_HISTORY
|
||||||
|
RETURN VARCHAR2
|
||||||
|
IS
|
||||||
|
BEGIN
|
||||||
|
RETURN CT_MRDS.ENV_MANAGER.FORMAT_VERSION_HISTORY(
|
||||||
|
pPackageName => 'FILE_MANAGER_ODS',
|
||||||
|
pVersionHistory => VERSION_HISTORY
|
||||||
|
);
|
||||||
|
END GET_VERSION_HISTORY;
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
END FILE_MANAGER_ODS;
|
||||||
|
|
||||||
|
/
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
create or replace PACKAGE ODS.FILE_MANAGER_ODS
|
||||||
|
AUTHID DEFINER
|
||||||
|
AS
|
||||||
|
/**
|
||||||
|
* FILE_MANAGER_ODS - Wrapper package for CT_MRDS.FILE_MANAGER
|
||||||
|
*
|
||||||
|
* This package serves as a wrapper for CT_MRDS.FILE_MANAGER procedures.
|
||||||
|
* The key difference is that this package uses AUTHID DEFINER instead of
|
||||||
|
* AUTHID CURRENT_USER, which means all objects will be created in the ODS
|
||||||
|
* schema regardless of which user executes the procedures.
|
||||||
|
*
|
||||||
|
* This solves the execution context issue where users need to connect as
|
||||||
|
* ODS user to use CT_MRDS.FILE_MANAGER procedures.
|
||||||
|
*
|
||||||
|
* MARS-1049: Added pEncoding parameter support for CSV character set specification
|
||||||
|
*/
|
||||||
|
|
||||||
|
-- Package Version Information (Semantic Versioning: MAJOR.MINOR.PATCH)
|
||||||
|
PACKAGE_VERSION CONSTANT VARCHAR2(10) := '2.1.0';
|
||||||
|
PACKAGE_BUILD_DATE CONSTANT VARCHAR2(20) := '2025-11-24 11:50:00';
|
||||||
|
PACKAGE_AUTHOR CONSTANT VARCHAR2(100) := 'Grzegorz Michalski';
|
||||||
|
|
||||||
|
-- Version History (Latest changes first)
|
||||||
|
VERSION_HISTORY CONSTANT VARCHAR2(4000) :=
|
||||||
|
'2.1.0 (2025-11-24): MARS-1049 - Added pEncoding parameter support for CSV character set specification' || CHR(13)||CHR(10) ||
|
||||||
|
'2.0.0 (2025-10-22): Added package versioning system using centralized ENV_MANAGER functions' || CHR(13)||CHR(10) ||
|
||||||
|
'1.5.0 (2025-10-12): Enhanced external table creation with official path patterns support' || CHR(13)||CHR(10) ||
|
||||||
|
'1.0.0 (2025-09-20): Initial release with AUTHID DEFINER wrapper for external table creation';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name CREATE_EXTERNAL_TABLE
|
||||||
|
* @desc Creates external tables that can read data from Oracle Cloud Storage.
|
||||||
|
* This is a wrapper for CT_MRDS.FILE_MANAGER.CREATE_EXTERNAL_TABLE
|
||||||
|
* but uses DEFINER rights to ensure objects are created in ODS schema.
|
||||||
|
*
|
||||||
|
* MARS-1049: Added support for CSV character set encoding specification
|
||||||
|
* @param pTableName - Name of the external table to create
|
||||||
|
* @param pTemplateTableName - Template table defining the structure
|
||||||
|
* @param pPrefix - Storage path prefix in Oracle Cloud Storage
|
||||||
|
* @param pBucketUri - URI of the target bucket (default: ENV_MANAGER.gvInboxBucketUri)
|
||||||
|
* @param pFileName - Specific file name (optional)
|
||||||
|
* @param pDelimiter - Field delimiter (default: ',')
|
||||||
|
* @param pEncoding - Character set encoding for CSV files (e.g., 'UTF-8', 'WE8MSWIN1252', 'EE8ISO8859P2')
|
||||||
|
* If NULL, no CHARACTERSET clause is added to external table definition
|
||||||
|
* @example EXEC ODS.FILE_MANAGER_ODS.CREATE_EXTERNAL_TABLE(
|
||||||
|
* 'C2D_A_UC_DISSEM_METADATA_LOADS_INBOX',
|
||||||
|
* 'CT_ET_TEMPLATES.C2D_A_UC_DISSEM_METADATA_LOADS',
|
||||||
|
* 'INBOX/C2D/UC_DISSEM/A_UC_DISSEM_METADATA_LOADS',
|
||||||
|
* CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
|
||||||
|
* NULL, ',', 'UTF-8'
|
||||||
|
* );
|
||||||
|
*/
|
||||||
|
PROCEDURE CREATE_EXTERNAL_TABLE (
|
||||||
|
pTableName IN VARCHAR2,
|
||||||
|
pTemplateTableName IN VARCHAR2,
|
||||||
|
pPrefix IN VARCHAR2,
|
||||||
|
pBucketUri IN VARCHAR2 DEFAULT CT_MRDS.ENV_MANAGER.gvInboxBucketUri,
|
||||||
|
pFileName IN VARCHAR2 DEFAULT NULL,
|
||||||
|
pDelimiter IN VARCHAR2 DEFAULT ',',
|
||||||
|
pEncoding IN VARCHAR2 DEFAULT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-- PACKAGE VERSION MANAGEMENT FUNCTIONS
|
||||||
|
---------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_VERSION
|
||||||
|
* @desc Returns the current version number of the FILE_MANAGER_ODS package.
|
||||||
|
* Uses semantic versioning format (MAJOR.MINOR.PATCH).
|
||||||
|
* @example SELECT FILE_MANAGER_ODS.GET_VERSION() FROM DUAL;
|
||||||
|
* @ex_rslt 2.1.0
|
||||||
|
**/
|
||||||
|
FUNCTION GET_VERSION RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_BUILD_DATE
|
||||||
|
* @desc Returns the build date of the FILE_MANAGER_ODS package.
|
||||||
|
* @return VARCHAR2 - Build date in format 'YYYY-MM-DD HH24:MI:SS'
|
||||||
|
* @example SELECT ODS.FILE_MANAGER_ODS.GET_BUILD_DATE() FROM DUAL;
|
||||||
|
*/
|
||||||
|
FUNCTION GET_BUILD_DATE RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_AUTHOR
|
||||||
|
* @desc Returns the author of the FILE_MANAGER_ODS package.
|
||||||
|
* @return VARCHAR2 - Package author name
|
||||||
|
* @example SELECT ODS.FILE_MANAGER_ODS.GET_AUTHOR() FROM DUAL;
|
||||||
|
*/
|
||||||
|
FUNCTION GET_AUTHOR RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_BUILD_INFO
|
||||||
|
* @desc Returns comprehensive build information including version, build date, and author.
|
||||||
|
* Uses centralized ENV_MANAGER.GET_PACKAGE_VERSION_INFO function.
|
||||||
|
* @example SELECT FILE_MANAGER_ODS.GET_BUILD_INFO() FROM DUAL;
|
||||||
|
* @ex_rslt Package: FILE_MANAGER_ODS
|
||||||
|
* Version: 2.1.0
|
||||||
|
* Build Date: 2025-11-24 11:50:00
|
||||||
|
* Author: Grzegorz Michalski
|
||||||
|
**/
|
||||||
|
FUNCTION GET_BUILD_INFO RETURN VARCHAR2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name GET_VERSION_HISTORY
|
||||||
|
* @desc Returns complete version history with all releases and changes.
|
||||||
|
* Uses centralized ENV_MANAGER.FORMAT_VERSION_HISTORY function.
|
||||||
|
* @example SELECT FILE_MANAGER_ODS.GET_VERSION_HISTORY() FROM DUAL;
|
||||||
|
* @ex_rslt FILE_MANAGER_ODS Version History:
|
||||||
|
* 2.0.0 (2025-10-22): Added package versioning system...
|
||||||
|
**/
|
||||||
|
FUNCTION GET_VERSION_HISTORY RETURN VARCHAR2;
|
||||||
|
|
||||||
|
END FILE_MANAGER_ODS;
|
||||||
|
|
||||||
|
/
|
||||||
@@ -29,7 +29,8 @@ DECLARE
|
|||||||
-- Format: 'SCHEMA.PACKAGE_NAME'
|
-- Format: 'SCHEMA.PACKAGE_NAME'
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
vPackageList t_string_array := t_string_array(
|
vPackageList t_string_array := t_string_array(
|
||||||
'CT_MRDS.FILE_MANAGER'
|
'CT_MRDS.FILE_MANAGER',
|
||||||
|
'ODS.FILE_MANAGER_ODS'
|
||||||
);
|
);
|
||||||
-- ===================================================================
|
-- ===================================================================
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user