172 lines
4.8 KiB
SQL
172 lines
4.8 KiB
SQL
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 ;
|
|
|