Skip to content

Instantly share code, notes, and snippets.

@angoca
Created March 15, 2018 15:39
Show Gist options
  • Save angoca/75b0c39ac2ae95fe732075d59e61bfc0 to your computer and use it in GitHub Desktop.
Save angoca/75b0c39ac2ae95fe732075d59e61bfc0 to your computer and use it in GitHub Desktop.
lookForDb2Object
#!/bin/bash
OBJECT=$2
if [[ -n ${OBJECT} ]] ; then
SCHEMA=$1
else
OBJECT=$1
fi
STMT=""
if [[ -n ${SCHEMA} ]] ; then
STMT="${STMT} SELECT 'TABLE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(T.TABSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(T.TABNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.TABLES T "
STMT="${STMT} WHERE T.TABSCHEMA LIKE '%${SCHEMA}%' "
STMT="${STMT} AND T.TABNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'FUNCTION' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(F.FUNCSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(F.FUNCNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.FUNCTIONS F "
STMT="${STMT} WHERE F.FUNCSCHEMA LIKE '%${SCHEMA}%' "
STMT="${STMT} AND F.FUNCNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'INDEX' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(I.INDSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(I.INDNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.INDEXES I "
STMT="${STMT} WHERE I.INDSCHEMA LIKE '%${SCHEMA}%' "
STMT="${STMT} AND I.INDNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'MODULE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(M.MODULESCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(M.MODULENAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.MODULES M "
STMT="${STMT} WHERE M.MODULESCHEMA LIKE '%${SCHEMA}%' "
STMT="${STMT} AND M.MODULENAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'PACKAGE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(P.PKGSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(P.PKGNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.PACKAGES P "
STMT="${STMT} WHERE P.PKGSCHEMA LIKE '%${SCHEMA}%' "
STMT="${STMT} AND P.PKGNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'PROCEDURE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(SP.PROCSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(SP.PROCNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.PROCEDURES SP "
STMT="${STMT} WHERE SP.PROCSCHEMA LIKE '%${SCHEMA}%' "
STMT="${STMT} AND SP.PROCNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'SEQUENCE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(S.SEQSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(S.SEQNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.SEQUENCES S "
STMT="${STMT} WHERE S.SEQSCHEMA LIKE '%${SCHEMA}%' "
STMT="${STMT} AND S.SEQNAME LIKE '%${OBJECT}%' "
else
STMT="${STMT} SELECT 'TABLE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(T.TABSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(T.TABNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.TABLES T "
STMT="${STMT} WHERE T.TABNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'FUNCTION' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(F.FUNCSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(F.FUNCNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.FUNCTIONS F "
STMT="${STMT} WHERE F.FUNCNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'INDEX' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(I.INDSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(I.INDNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.INDEXES I "
STMT="${STMT} WHERE I.INDNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'MODULE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(M.MODULESCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(M.MODULENAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.MODULES M "
STMT="${STMT} WHERE M.MODULENAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'PACKAGE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(P.PKGSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(P.PKGNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.PACKAGES P "
STMT="${STMT} WHERE P.PKGNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'PROCEDURE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(SP.PROCSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(SP.PROCNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.PROCEDURES SP "
STMT="${STMT} WHERE SP.PROCNAME LIKE '%${OBJECT}%' "
STMT="${STMT} UNION ALL "
STMT="${STMT} SELECT 'SEQUENCE' AS TYPE, "
STMT="${STMT} VARCHAR(SUBSTR(S.SEQSCHEMA, 1, 32), 32) AS SCHEMA, "
STMT="${STMT} VARCHAR(SUBSTR(S.SEQNAME, 1, 32), 32) AS NAME "
STMT="${STMT} FROM SYSCAT.SEQUENCES S "
STMT="${STMT} WHERE S.SEQNAME LIKE '%${OBJECT}%' "
fi
echo ${STMT}
db2 ${STMT}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment