查询以检查 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 - 期刊架构
希望这对寻找类似内容的人有所帮助!!
我是 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 - 期刊架构
希望这对寻找类似内容的人有所帮助!!