From c450105cb9ea0fcbe92fc8cb87a95f378fc55744 Mon Sep 17 00:00:00 2001 From: Alex Zaw Date: Wed, 25 Feb 2026 23:00:59 +0000 Subject: [PATCH] Update Function GET_DATABASE_OBJECTS --- CISTOOLS/Functions/GET_DATABASE_OBJECTS.sql | 172 +++++++++++++++++++- 1 file changed, 171 insertions(+), 1 deletion(-) diff --git a/CISTOOLS/Functions/GET_DATABASE_OBJECTS.sql b/CISTOOLS/Functions/GET_DATABASE_OBJECTS.sql index b77106a..a5260be 100644 --- a/CISTOOLS/Functions/GET_DATABASE_OBJECTS.sql +++ b/CISTOOLS/Functions/GET_DATABASE_OBJECTS.sql @@ -1 +1,171 @@ -@@\@^@ % %@@@@Kmm@M@ %@M]@]@ %@@M@ %m@M]@k@ %m@M]@k@ %mm@M]@k@ %m@M]@k@ %m@M]@]@@@ %@@ %@Kmm@ %@@ %@@@ %@@@@ %@@@@~@\@k@ %@~@\@k@ %@~@\@k@ %@~@Mk@k@]@k@ %@~@\@k@ %@~@\@k@ %@~@\@@@ %@@@@M@ %@@K@@k@@K@@k@@K@@k@@K@@k@@K@@k@@K@@k@@K@@@ %@@K@@@ %@@@@K@@@ %@M@@K@@~@@K@@@ %M@@K@@~@@K@@@ %@K@@~@@K@@]@]@ %@@K@@~@@@ %@K@@@M@}}@k@}}@k@}}@k@}}@k@}}@k@}}@k@}}@]@@ %@K@@~@}}@ %]@@@K@m@M@@K@@]@Ձ@k@@K@@⨢@Ձ@k@ %@ %@@K@@~@}}@@ %@ %@@K@@@M@}}@k@}}@k@}}@]@@}@Mあ]}@ %@@K@@@M@}}@k@}}@]@@}@M剅]}@ %@}}@ %@ %@@K@@~@}}@@}ɕ}@ %@@K@@@M@}}@k@}}@]@@}あ}@ %@@K@@~@}}@@}あ@Mԁ@ؤ]}@ %@@K@@@M@}}@k@}}@]@@}剅}@ %@@K@@ %@㨗@k@@K@@֦@k@ %@ %@@K@@@@@}}@ %@@M@@K@@]@ %@ㅧ@ %@@ %@@ %@@K@m@M@@]@Ձ@k@}}@⨢@Ձ@k@ %@@ %@}}@@}È@Ö}@ %@}}@@}䕉@҅@Ö}@ %@}@}@@}י@҅@Ö}@ %@}@}@@}Ɩ@҅@Ö}@ %@@ %@㨗@k@}}@֦@k@ %@ %@@@@@}}@ %@@M@@]@ %@ㅧ@ %@@K@@ %@@~@@ %@@ %@@K@m@M@@]@Ձ@k@@K@m@M@]@⨢@Ձ@k@ %@@ %@}}@@}Ƥ}@ %@}}@@}י}@ %@@ %@㨗@k@}}@֦@k@ %@ %@@@@@}}@ %@@M@@]@ %@ㅧ@ %@@K@@ %@@~@@@ %@Ln@}}@ %@@ %@@K@m@M@@]@Ձ@k@@⨢@Ձ@k@ %@@ %@}}@@}@㨗}@ %@}}@@}ĉ@㨗}@ %@}㨗}@ %@㨗@k@}}@֦@k@ %@ %@@@@@}}@ %@@M@@]@ \ No newline at end of file +SET PATH *LIBL ; + +CREATE OR REPLACE FUNCTION CISTOOLS.GET_DATABASE_OBJECTS ( + INSCHEMA VARCHAR(128) ) + RETURNS TABLE ( + SQL_NAME VARCHAR(128) , + SYSTEM_NAME VARCHAR(128) , + SQL_OBJECT_TYPE VARCHAR(128) , + OBJECT_OWNER VARCHAR(128) , + OBJECT_DESCRIPTION VARCHAR(128) ) + LANGUAGE SQL + SPECIFIC CISTOOLS.GET_DATABASE_OBJECTS + NOT DETERMINISTIC + READS SQL DATA + CALLED ON NULL INPUT + SET OPTION ALWBLK = *ALLREAD , + ALWCPYDTA = *OPTIMIZE , + COMMIT = *NONE , + DECRESULT = (31, 31, 00) , + DYNDFTCOL = *NO , + DYNUSRPRF = *USER , + SRTSEQ = *HEX + RETURN WITH AITV AS ( +SELECT F . DBXLFI , F . DBXFIL , F . DBXATR , F . DBXREL , F . DBXOWN , F . DBXTXT , T . DBXATR TATR +FROM QSYS . QADBXFIL F +LEFT OUTER JOIN QSYS . QADBXFIL T +ON ( F . DBXALB = T . DBXLB2 AND +( F . DBXAFL = T . DBXLFI OR +F . DBXAFL = T . DBXFIL ) ) +WHERE F . DBXLB2 = INSCHEMA AND +F . DBXATR IN ( 'AL' , 'IX' , 'LF' , 'MQ' , 'PF' , 'TB' , 'VW' ) AND +F . DBXREL = 'Y' +) SELECT QSYS2 . DELIMIT_NAME ( AITV . DBXLFI ) "Name" , AITV . DBXFIL "System Name" , +CASE +WHEN AITV . DBXATR = 'AL' THEN +CASE +WHEN AITV . TATR IN ( 'TB' , 'MQ' , 'PF' ) THEN 'Alias (Table)' +WHEN AITV . TATR IN ( 'VW' , 'LF' ) THEN 'Alias (View)' +ELSE 'Alias' +END +WHEN AITV . DBXATR = 'IX' THEN 'Index' +WHEN AITV . DBXATR IN ( 'TB' , 'PF' ) THEN 'Table' +WHEN AITV . DBXATR = 'MQ' THEN 'Table (Materialized Query)' +WHEN AITV . DBXATR IN ( 'VW' , 'LF' ) THEN 'View' +ELSE AITV . DBXATR +END "Type" , AITV . DBXOWN "Owner" , +CASE +WHEN AITV . DBXTXT IS NULL THEN '' +ELSE TRIM ( AITV . DBXTXT ) +END "Text" +FROM AITV +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( RELNAME ) "Name" , '' "System Name" , +CASE TYPE +WHEN 'CHECK' THEN 'Check Constraint' +WHEN 'UNIQUE' THEN 'Unique Key Constraint' +WHEN 'PRIMARY KEY' THEN 'Primary Key Constraint' +WHEN 'FOREIGN KEY' THEN 'Foreign Key Constraint' +ELSE TYPE +END "Type" , '' "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSCST +WHERE CDBNAME = INSCHEMA +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( RTNNAME ) "Name" , QSYS2 . DELIMIT_NAME ( SPECNAME) "System Name" , +CASE RTNTYPE +WHEN 'FUNCTION' THEN 'Function' +WHEN 'PROCEDURE' THEN 'Procedure' +ELSE RTNTYPE +END "Type" , '' "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSROUTINE +WHERE RTNSCHEMA = INSCHEMA AND +ORIGIN <> 'S' +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( TYPENAME ) "Name" , SYSTNAME "System Name" , +CASE METATYPE +WHEN 'A' THEN 'Array Type' +WHEN 'T' THEN 'Distinct Type' +ELSE 'Type' +END "Type" , '' "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSTYPES +WHERE TYPESCHEMA = INSCHEMA AND +METATYPE <> 'S' +UNION ALL +SELECT NAME "Name" , SYS_NAME "System Name" , 'SQL Package' "Type" , OWNER "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSPACKAGE +WHERE COLLID = INSCHEMA +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( TRIGNAME ) "Name" , '' "System Name" , 'Trigger' "Type" , '' "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSTRIGGERS +WHERE TRIGSCHEMA = INSCHEMA +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( SEQNAME ) "Name" , '' "System Name" , 'Sequence' "Type" , '' "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSSEQUENCES +WHERE SEQSCHEMA = INSCHEMA +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( VARNAME ) "Name" , SYSVNAME "System Name" , 'Variable' "Type" , OWNER "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSVARIABLES +WHERE VARSCHEMA = INSCHEMA +UNION ALL +SELECT OBJNAME "Name" , OBJNAME "System Name" , +CASE OBJTYPE +WHEN '*JRN' THEN 'Journal' +WHEN '*JRNRCV' THEN 'Journal Receiver' +ELSE OBJTYPE +END "Type" , OBJOWNER "Owner" , +CASE +WHEN OBJTEXT IS NULL THEN '' +ELSE TRIM ( OBJTEXT ) +END "Text" +FROM TABLE ( +QSYS2 . OBJECT_STATISTICS ( INSCHEMA , '*JRN *JRNRCV' ) +) OS +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( NAME ) "Name" , '' "System Name" , +CASE CONTROLTYP +WHEN 'M' THEN 'Column Mask' +WHEN 'R' THEN 'Row Permission' +ELSE CONTROLTYP +END "Type" , CREATOR "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . SYSCONTROLS +WHERE SCHEMA = INSCHEMA +UNION ALL +SELECT QSYS2 . DELIMIT_NAME ( XSRNAME ) "Name" , SYSXNAME "System Name" , 'XML Schema' "Type" , OWNER "Owner" , +CASE +WHEN LABEL IS NULL THEN '' +ELSE TRIM ( LABEL ) +END "Text" +FROM QSYS2 . XSROBJECTS +WHERE XSRSCHEMA = INSCHEMA +ORDER BY 3 ASC , 1 ASC ; + +GRANT ALTER , EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GET_DATABASE_OBJECTS +TO AMAPICS WITH GRANT OPTION ; + +GRANT EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GET_DATABASE_OBJECTS +TO PUBLIC ; +