查询以检查 table 是否记录在 DB2 中

Query to check whether table is journaled in DB2

我是 db2 的新手。 是否有检查 table 是否记录在 DB2 中的查询。如果它是日记的,日记的名称是什么。

我找到了这个查询:查找图书馆 MJATST 中的所有期刊。

SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MJATST ','JRN') ) AS X

但我在架构中找不到类似于 tables 的内容。

我不知道有什么,快速搜索可能的目录也没有找到方法。
http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/db2/rbafzcatalog.htm

检索对象描述 (QUSROBJD) 中提供了日志信息 API http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/apis/qusrobjd.htm

您可以将 API 包装在 UDF 中。

以下是一个 CLLE 源的示例,它至少可以追溯到 v5r3 [没有利用更新的 CL 支持来使代码更简洁]来创建绑定的 ILE CL *PGM 对象它作为标量函数调用 [如前所述] 由 CL 源代码之前的块注释中显示的 CREATE FUNCTION 定义为 SQL;一个非常简单的测试套件验证了功能:

 /* create function jrnOfDBF                            */
 /* ( table_name varchar(128)                           */
 /* , table_libr varchar( 10)                           */
 /* ) returns char(20)                                  */
 /* language PLI -- a lie to allow VARCHAR inputs       */
 /* specific        jrnOfDBF                            */
 /* not deterministic                                   */
 /* no sql  returns null on null input                  */
 /* disallow parallel  not fenced no external action    */
 /* parameter style SQL                                 */
 /* external name   jrnOfDBF                            */
 /* */
 /* CRTBNDCL PGM(JRNOFDBF) SRCMBR(..following_source..) */
 /* */
 pgm (&tblnam &tbllib +                                   
      &rtnval &rtnind &sqlste &udfnam &specnm &diagmg)    
 dcl &tblnam *char 130                                    
 dcl &tbllib *char  12                                    
 dcl &rtnval *char  20                                    
 dcl &rtnind *int    2                                    
 dcl &sqlste *char   5                                    
 dcl &udfnam *char 141                                    
 dcl &specnm *char 130                                    
 dcl &diagmg *char  72                                    
 /* Pgm Vars */                                           
 dcl &lngnam *char 128                    
 dcl &lnglib *char  10                    
 dcl &dbflib *char  10                    
 dcl &dbfobj *char  10                    
 dcl &jrnsts *char   1                    
 dcl &jrnlib *char  10                    
 dcl &jrnobj *char  10                    
 dcl &strlen *int    4                    
 dcl &qualnm *char  20                    
 monmsg cpf0000 exec(goto badthing)       
 main:                                    
  chgvar &strlen (%bin(&tbllib 1 2))      
  chgvar &lnglib (%sst(&tbllib 3 &strlen))
  chgvar &strlen (%bin(&tblnam 1 2))      
  chgvar &lngnam (%sst(&tblnam 3 &strlen))
  call qdbrtvsn (&qualnm &lngnam &strlen &lnglib x'0000000000000000') 
   /* 1  Qualified object name              Output   Char( 20)      */
   /* 2  Long object name                   Input    Char(128)      */
   /* 3  Length of long object name         Input    Binary(4)      */
   /* 4  Library name                       Input    Char( 10)      */
   /* 5  Error code                         I/O      Char( * )      */
  chgvar  &dbflib (%sst(&qualnm 11 10))                               
  chgvar  &dbfobj (%sst(&qualnm 01 10))                               
  rtvobjd &dbflib/&dbfobj *file aspdev(*) +                           
     jrnsts(&jrnsts) jrn(&jrnobj) jrnlib(&jrnlib)                     
  if (&jrnsts *eq '1') then(do)                                       
   chgvar &rtnval (&jrnobj *cat &jrnlib) /* qualified name of jrn */  
  enddo                                                               
  /* else &rtnval is already blanks */                                
  chgvar &rtnind 0                                                    
 mainend:                                                             
  return                                                              
 badthing:                                                            
  chgvar &rtnind -1                                                   
  chgvar &sqlste 'JRN99'                                              
  chgvar &diagmg 'Unable to retrieve Obj Info; see joblog'            
  sndpgmmsg *n cpf9898 qcpfmsg &diagmg tomsgq(*topgmq) topgmq(*prv) + 
     msgtype(*diag)                                                   
  goto mainend                                                        
 endpgm                  

函数调用示例:

 select jrnOfDBF('SYSROUTINES', 'QSYS2') from qsys2.qsqptabl 

交互式启动 SQL (STRSQL) 显示报告将显示的内容:

 ....+....1....+....2           
 JRNOFDBF                       
 QSQJRN    QSYS2                
 ********  End of data  ********

注意:返回的空白值表示 当前未记录 从未记录,而任何非空值都应该是标准格式的期刊的限定名称:'10bytObjNm10bytLibNm'

我对文件使用了 DSPFD 命令(table)..它详细说明了关于文件的一堆信息(table)..

MBJRNL -(N/Y)table是否有关联的期刊

如果是,那么您可以从下一列获取期刊信息,否则该列将为空

MBJRNM - 期刊名称

MBJRLB - 期刊架构

希望这对寻找类似内容的人有所帮助!!