Monday, 7 May 2012

To Check Required Fields,Field Length of a record

SELECT A.RECNAME
 , A.FIELDNAME
 , CASE WHEN B.FIELDTYPE = 0 THEN 'CHAR' WHEN B.FIELDTYPE = 1 THEN 'LONG CHAR' WHEN B.FIELDTYPE = 2 THEN 'NUMBER' WHEN B.FIELDTYPE = 3 THEN 'SIGNED NBR' WHEN B.FIELDTYPE = 4 THEN 'DATE' WHEN B.FIELDTYPE = 5 THEN 'TIME' WHEN B.FIELDTYPE = 6 THEN 'DATETIME' WHEN B.FIELDTYPE = 7
    OR B.FIELDTYPE = 8 THEN 'IMAGE' ELSE NULL END AS FIELDTYPE
    , CASE WHEN B.FIELDTYPE = 2
    OR B.FIELDTYPE = 3 THEN TRIM(TO_CHAR(B.LENGTH)) || '.' || TO_CHAR(B.DECIMALPOS) ELSE TO_CHAR(B.LENGTH) END AS FLDLEN
    , CASE WHEN bitand(A.USEEDIT
    , 256) > 0 THEN 'YES' ELSE 'NO' END AS REQ
    , CASE WHEN bitand(A.USEEDIT
    , 1) > 0 THEN 'KEY' WHEN bitand(A.USEEDIT
    , 2) > 0 THEN 'DUP' WHEN bitand(A.USEEDIT
    , 16) > 0 THEN 'ALT' ELSE NULL END AS KEY_TYPE
    , CASE WHEN bitand(A.USEEDIT
    , 64) > 0 THEN 'DESC' WHEN ( bitand(A.USEEDIT
    , 1) > 0
    OR bitand(A.USEEDIT
    , 2) > 0
    OR bitand(A.USEEDIT
    , 16) > 0 )
   AND bitand(A.USEEDIT
   , 64) = 0 THEN 'ASC' ELSE NULL END AS DIR
   , CASE WHEN bitand(A.USEEDIT
   , 2048) > 0 THEN 'YES' ELSE 'NO' END AS SRCH
   , CASE WHEN bitand(A.USEEDIT
   , 32) > 0 THEN 'YES' ELSE 'NO' END AS LIST
   , CASE WHEN bitand(A.USEEDIT
   , 4) > 0 THEN 'YES' ELSE 'NO' END AS SYS
   , CASE WHEN TRIM(A.DEFRECNAME) = '' THEN A.DEFFIELDNAME ELSE TRIM(A.DEFRECNAME) || '.' || A.DEFFIELDNAME END AS DEFAULT_VALUE
   , CASE WHEN bitand(A.USEEDIT
   , 8) > 0
   AND bitand(A.USEEDIT
   , 128) = 0
   AND bitand(A.USEEDIT
   , 1024) = 0 THEN 'A' WHEN bitand(A.USEEDIT
   , 8) > 0
   AND bitand(A.USEEDIT
   , 128) > 0
   AND bitand(A.USEEDIT
   , 1024) = 0 THEN 'AC' WHEN bitand(A.USEEDIT
   , 8) > 0
   AND bitand(A.USEEDIT
   , 128) > 0
   AND bitand(A.USEEDIT
   , 1024) > 0 THEN 'ACD' WHEN bitand(A.USEEDIT
   , 8) = 0
   AND bitand(A.USEEDIT
   , 128) > 0
   AND bitand(A.USEEDIT
   , 1024) = 0 THEN 'C' WHEN bitand(A.USEEDIT
   , 8) = 0
   AND bitand(A.USEEDIT
   , 128) > 0
   AND bitand(A.USEEDIT
   , 1024) > 0 THEN 'CD' WHEN bitand(A.USEEDIT
   , 8) = 0
   AND bitand(A.USEEDIT
   , 128) = 0
   AND bitand(A.USEEDIT
   , 1024) > 0 THEN 'D' ELSE NULL END AS AUDT
   , CASE WHEN bitand(A.USEEDIT
   , 16384) > 0 THEN 'PROMPT' WHEN bitand(A.USEEDIT
   , 512) > 0 THEN 'XLAT' WHEN bitand(A.USEEDIT
   , 8192) > 0 THEN 'Y/N' ELSE NULL END AS EDIT
   , A.EDITTABLE AS PROMPT_TABLE
   , A.SETCNTRLFLD AS SET_CONTROL_FLD
   , CASE WHEN bitand(A.USEEDIT
   , 4096) > 0 THEN 'YES' ELSE 'NO' END AS REASONABLE_DT
   , CASE WHEN bitand(A.USEEDIT
   , 32768) > 0 THEN 'YES' ELSE 'NO' END AS AUTO_UPDT
   , CASE WHEN bitand(A.USEEDIT
   , 262144) > 0 THEN 'FROM' WHEN bitand(A.USEEDIT
   , 524288) > 0 THEN 'THROUGH' ELSE NULL END AS SEARCH_FIELD
   , CASE WHEN A.SUBRECORD = 'Y' THEN 'YES' ELSE 'NO' END AS SUBRECORD
   , A.LASTUPDDTTM
   , A.LASTUPDOPRID
  FROM PSRECFIELD A
  , PSDBFIELD B
 WHERE A.RECNAME = 'RECNAME'
   AND A.FIELDNAME = B.FIELDNAME
  ORDER BY FIELDNUM,REQ

No comments:

Post a Comment