Files
SQL/CISTOOLS/Procedures/REVIEW_JOURNAL.sql

140 lines
4.7 KiB
SQL

SET PATH *LIBL ;
CREATE OR REPLACE PROCEDURE CISTOOLS.REVIEW_JOURNAL (
IN FILE_NAME VARCHAR(128) ,
IN JOURNAL_NAME VARCHAR(128) ,
IN FILE_LIBRARY VARCHAR(128) DEFAULT NULL ,
IN JOURNAL_LIBRARY VARCHAR(128) DEFAULT 'MPXJRN' ,
IN FROM_DATE DATE DEFAULT NULL ,
IN COLUMN_LIST VARCHAR(1024) DEFAULT 'ALL' ,
IN WHERE_CLAUSE VARCHAR(2056) DEFAULT NULL )
DYNAMIC RESULT SETS 1
LANGUAGE SQL
SPECIFIC CISTOOLS.REVIEW_JOURNAL
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
PROGRAM TYPE SUB
SET OPTION ALWBLK = *ALLREAD ,
ALWCPYDTA = *OPTIMIZE ,
COMMIT = *NONE ,
DBGVIEW = *SOURCE ,
DECRESULT = (31, 31, 00) ,
DYNDFTCOL = *NO ,
DYNUSRPRF = *USER ,
SRTSEQ = *HEX
BEGIN
DECLARE START_POSITION , COLUMN_BUFFER INTEGER ;
DECLARE PAD VARCHAR ( 3 ) DEFAULT ', ' ;
DECLARE JOURNAL_CUR CURSOR WITH RETURN TO CALLER FOR SQL_STMT ;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
END ;
IF FROM_DATE IS NULL THEN
SET FROM_DATE = CURRENT_DATE - 7 DAYS ;
END IF ;
SET SQL_STATEMENT = STRIP_SPACES ( 'Select Entry_TimeStamp,
Journal_Code ,
Case Journal_Entry_Type When ''PT''
Then ''Insert''
When ''PX''
Then ''Insert By RRN''
When ''UB''
Then ''Update Before''
When ''UP''
Then ''Update After''
When ''DL''
Then ''Delete''
Else Journal_Entry_Type
End As JrnType,
Job_Name,
Job_User,
Job_Number ,
Program_Name,
Program_Library ' ) ;
SET START_POSITION = 1 ;
IF FILE_LIBRARY IS NULL
OR TRIM ( FILE_LIBRARY ) = '' THEN
SET FILE_LIBRARY = ( SELECT SYSTEM_SCHEMA_NAME
FROM QSYS2 . LIBLIST B
JOIN SYSTABLES
ON SYSTEM_SCHEMA_NAME = TABLE_SCHEMA
AND FILE_NAME = TABLE_NAME
ORDER BY B . ORDINAL_POSITION
LIMIT 1 ) ;
END IF ;
FOR SELECT TABLE_SCHEMA AS SYSTEM_TABLE_SCHEMA , COLUMN_NAME , COLUMN_HEADING ,A . ORDINAL_POSITION , DATA_TYPE ,
LENGTH AS FIELD_LENGTH , COALESCE ( NUMERIC_SCALE , 0 ) AS NUMERIC_SCALE , STORAGE , COALESCE ( CCSID , 0 ) AS FIELD_CCSID
FROM QSYS2 . SYSCOLUMNS A
WHERE TABLE_SCHEMA = FILE_LIBRARY
AND FILE_NAME = TABLE_NAME
ORDER BY A . ORDINAL_POSITION
DO
SET COLUMN_BUFFER =
CASE DATA_TYPE
WHEN 'DATE' THEN 10
WHEN 'TIME' THEN 8
WHEN 'TIMESTMP' THEN 26
ELSE STORAGE
END ;
IF COLUMN_LIST = 'ALL'
OR LOCATE ( TRIM ( UPPER ( COLUMN_NAME ) ) , UPPER ( COLUMN_LIST ) ) > 0 THEN
SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) || PAD || 'Interpret(SubStr(Entry_Data' || PAD || VARCHAR ( START_POSITION ) || PAD ||
VARCHAR ( COLUMN_BUFFER ) || ') As ' || TRIM (
CASE DATA_TYPE
WHEN 'DATE' THEN 'Varchar(10)'
WHEN 'TIME' THEN 'Varchar(8)'
WHEN 'TIMESTMP' THEN 'Varchar(26)'
WHEN 'FLOAT' THEN
CASE FIELD_LENGTH
WHEN 16 THEN 'Float'
WHEN 8 THEN 'Double'
WHEN 4 THEN 'Real'
END
ELSE DATA_TYPE
END ) ;
SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) ||
CASE
WHEN DATA_TYPE IN ( 'CHAR' , 'VARCHAR' , 'BINARY' ) THEN ' (' || VARCHAR ( FIELD_LENGTH ) || ')'
WHEN DATA_TYPE IN ( 'DECIMAL' , 'NUMERIC' ) THEN ' (' || VARCHAR ( FIELD_LENGTH) || PAD || VARCHAR ( NUMERIC_SCALE ) || ')'
END || ')' ;
SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) || ' As ' || TRIM ( COLUMN_NAME ) ;END IF ;
SET START_POSITION = START_POSITION + COLUMN_BUFFER ;
END FOR ;
SET SQL_STATEMENT = TRIM ( SQL_STATEMENT ) || ' From Table (
Qsys2.Display_Journal(Journal_Library => ''' || TRIM ( JOURNAL_LIBRARY ) ||
''', Journal_Name => ''' || TRIM ( JOURNAL_NAME ) || ''',' ||
'Starting_Receiver_Name => ''*CURAVLCHN'', Journal_Codes => ''R'',' || 'Object_Library => ''' || TRIM ( FILE_LIBRARY ) ||
''', Object_Name => ''' || TRIM ( FILE_NAME ) || ''', Object_Member => ''*ALL'',' ||
'Object_Objtype => ''*FILE'')) Where Entry_Timestamp > Date(''' || FROM_DATE ||''')' ;
IF WHERE_CLAUSE IS NOT NULL THEN
SET WHERE_CLAUSE =
CASE
WHEN LOWER ( SUBSTR ( TRIM ( WHERE_CLAUSE ) , 1 , 5 ) ) = 'where' THEN TRIM ( WHERE_CLAUSE )
ELSE ' Where ' || WHERE_CLAUSE
END ;
SET SQL_STATEMENT = 'Select * From Table(' || SQL_STATEMENT || ')' || WHERE_CLAUSE ;
END IF ;
SET SQL_STATEMENT = SQL_STATEMENT || ' For Read Only' ;
PREPARE SQL_STMT FROM SQL_STATEMENT ;
OPEN JOURNAL_CUR ;
END ;
COMMENT ON PARAMETER SPECIFIC PROCEDURE CISTOOLS.REVIEW_JOURNAL
( FILE_NAME IS 'File Name' ,
JOURNAL_NAME IS 'Journal Name' ,
FILE_LIBRARY IS 'File Library' ,
JOURNAL_LIBRARY IS 'Journal Library' ,
FROM_DATE IS 'From Date' ,
COLUMN_LIST IS 'Column List' ,
WHERE_CLAUSE IS 'Where Clause' ) ;
GRANT ALTER , EXECUTE
ON SPECIFIC PROCEDURE CISTOOLS.REVIEW_JOURNAL
TO AMAPICS WITH GRANT OPTION ;
GRANT EXECUTE
ON SPECIFIC PROCEDURE CISTOOLS.REVIEW_JOURNAL
TO PUBLIC ;