IBM Support

STRDBMON Over a View (Enables faster SQL statement auditing)

News


Abstract

STRDBMON Over a View (Enables faster SQL statement auditing)

Content

You are in: IBM i Technology Updates > Db2 for i - Technology UpdatesDb2 for i Security Enhancements > STRDBMON Over a View (Enables faster SQL statement auditing)

There are two approaches to capturing database monitor information with a reduced storage and CPU cost.


Methodology 1 - Insertable View with an SQL Instead of Trigger
 

Step 1: Create a table with a subset of the columns found within the QSYS/QAQQDBMN model file.
 

-- This table is only used to provide a base for the IOT.  No rows are written to this file.
create or replace table toystore.dbmonP AS (
select QQSTIM, QQETIM, QQRID, QQC21, QQI8, qvc102, QQC104, QQC103, QQJOB, QQUSER, QQJNUM, QQI2, QQ1000, QQDBCLOB1 from qsys.qaqqdbmn
) with no data ON REPLACE DELETE ROWS;

Step 2: Create a insertable view. Columns that do not appear in the dbmonP table should be cast to NULL using the appropriate data type.


--
-- The view should cast to NULL all columns that are not consumed
-- Note that this view definition works on IBM i 7.1 and 7.2
--
CREATE OR REPLACE VIEW toystore.dbmonv

                                     (qqrid, qqtime, qqjfld,
                                       qqrdbn, qqsys, qqjob,
                                       qquser, qqjnum, qqucnt,
                                       qqudef, qqstn, qqqdtn,
                                       qqqdtl, qqmatn, qqmatl,
                                       qqtln, qqtfn, qqtmn, qqptln,
                                       qqptfn, qqptmn, qqilnm,
                                       qqifnm, qqimnm, qqntnm,
                                       qqnlnm, qqstim, qqetim,
                                       qqkp, qqks, qqtotr, qqtmpr,
                                       qqjnp, qqept, qqdss, qqidxa,
                                       qqordg, qqgrpg, qqjng,
                                       qqunin, qqsubq, qqhstv,
                                       qqrcds, qqrcod, qqrss,
                                       qqrest, qqridx, qqfkey,
                                       qqksel, qqajn, qqidxd,
                                       qqc11, qqc12, qqc13, qqc14,
                                       qqc15, qqc16, qqc18, qqc21,
                                       qqc22, qqc23, qqi1, qqi2,
                                       qqi3, qqi4, qqi5, qqi6,
                                       qqi7, qqi8, qqi9, qqia,
                                       qqf1, qqf2, qqf3, qqc61,
                                       qqc81, qqc82, qqc83, qqc84,
                                       qqc101, qqc102, qqc103,
                                       qqc104, qqc105, qqc106,
                                       qqc181, qqc182, qqc183,
                                       qqc301, qqc302, qqc303,
                                       qq1000, qqtim1, qqtim2,
                                       qvqtbl, qvqlib, qvptbl,
                                       qvplib, qvinam, qvilib,
                                       qvqtbli, qvptbli, qvinami,
                                       qvbndy, qvjfano, qvparpf,
                                       qvparpl, qvc11, qvc12,
                                       qvc13, qvc14, qvc15, qvc16,
                                       qvc17, qvc18, qvc19, qvc1a,
                                       qvc1b, qvc1c, qvc1d, qvc1e,
                                       qvc1f, qwc11, qwc12, qwc13,
                                       qwc14, qwc15, qwc16, qwc17,
                                       qwc18, qwc19, qwc1a, qwc1b,
                                       qwc1c, qwc1d, qwc1e, qwc1f,
                                       qvc21, qvc22, qvc23, qvc24,
                                       qvctim, qvpard, qvparu,
                                       qvparrc, qvrcnt, qvfiles,
                                       qvp151, qvp152, qvp153,
                                       qvp154, qvp155, qvp156,
                                       qvp157, qvp158, qvp159,
                                       qvp15a, qvp15b, qvp15c,
                                       qvp15d, qvp15e, qvp15f,
                                       qvc41, qvc42, qvc43, qvc44,
                                       qvc81, qvc82, qvc83, qvc84,
                                       qvc85, qvc86, qvc87, qvc88,
                                       qvc101, qvc102, qvc103,
                                       qvc104, qvc105, qvc106,
                                       qvc107, qvc108, qvc1281,
                                       qvc1282, qvc1283, qvc1284,
                                       qvc3001, qvc3002, qvc3003,
                                       qvc3004, qvc3005, qvc3006,
                                       qvc3007, qvc3008, qvc5001,
                                       qvc5002, qvc1000, qwc1000,
                                       qqint01, qqint02, qqint03,
                                       qqint04, qqsmint1, qqsmint2,
                                       qqsmint3, qqsmint4,
                                       qqsmint5, qqsmint6, qq1000l,
                                       qfc11, qfc12, qfc13,
                                       qqclob2, qfc14, qfc15,
                                       qfc16, qqclob3, qfc17,
                                       qfc18, qfc19, qqdbclob1,
                                       qfc1a, qfc1b, qfc1c,
                                       qqdbclob2, qfc1d, qfc1e,
                                       qfc1f, qqblob1, qxc11,
                                       qxc12, qxc13, qxc14, qxc15,
                                       qxc16, qxc17, qxc18, qxc19,
                                       qxc1a, qxc1b, qxc1c, qxc1d,
                                       qxc1e, qxc21, qxc22, qxc23,
                                       qxc24, qxc25, qxc26, qxc27,
                                       qxc28, qxc29, qxc41, qxc42,
                                       qxc43, qxc44, qqint05,
                                       qqint06, qqint07, qqint08,
                                       qqint09, qqint0a, qqint0b,
                                       qqint0c, qqint0d, qqint0e,
                                       qqint0f, qqsmint7, qqsmint8,
                                       qqsmint9, qqsminta,
                                       qqsmintb, qqsmintc,
                                       qqsmintd, qqsminte, qqsmintf)
   AS SELECT qqrid, CAST(NULL AS TIMESTAMP)
   AS qqtime, CAST(NULL AS CHAR(46) FOR BIT DATA)
AS qqjfld, CAST(NULL AS CHAR(18)) AS qqrdbn,
CAST(NULL AS CHAR(8)) AS qqsys,
QQJOB, QQUSER, QQJNUM,
CAST(NULL AS DECIMAL(15, 0)) AS qqucnt,
CAST(NULL AS VARCHAR(100)) AS qqudef, CAST(NULL AS DECIMAL(15,
0)) AS qqstn, CAST(NULL AS DECIMAL(15, 0)) AS qqqdtn,
CAST(NULL AS DECIMAL(15, 0)) AS qqqdtl, CAST(NULL AS DECIMAL(15,
0)) AS qqmatn, CAST(NULL AS DECIMAL(15, 0)) AS qqmatl,
CAST(NULL AS CHAR(10)) AS qqtln, CAST(NULL AS CHAR(10)) AS qqtfn,
CAST(NULL AS CHAR(10)) AS qqtmn, CAST(NULL AS CHAR(10)) AS qqptln,
CAST(NULL AS CHAR(10)) AS qqptfn, CAST(NULL AS CHAR(10)) AS qqptmn,
CAST(NULL AS CHAR(10)) AS qqilnm, CAST(NULL AS CHAR(10)) AS qqifnm,
CAST(NULL AS CHAR(10)) AS qqimnm, CAST(NULL AS CHAR(10)) AS qqntnm,
CAST(NULL AS CHAR(10)) AS qqnlnm,
QQSTIM, QQETIM,
CAST(NULL AS CHAR(1)) AS qqkp,
CAST(NULL AS CHAR(1)) AS qqks, CAST(NULL AS DECIMAL(15,
0)) AS qqtotr, CAST(NULL AS DECIMAL(15, 0)) AS qqtmpr,
CAST(NULL AS DECIMAL(15, 0)) AS qqjnp, CAST(NULL AS DECIMAL(15,
0)) AS qqept, CAST(NULL AS CHAR(1)) AS qqdss,
CAST(NULL AS CHAR(1)) AS qqidxa, CAST(NULL AS CHAR(1)) AS qqordg,
CAST(NULL AS CHAR(1)) AS qqgrpg, CAST(NULL AS CHAR(1)) AS qqjng,
CAST(NULL AS CHAR(1)) AS qqunin, CAST(NULL AS CHAR(1)) AS qqsubq,
CAST(NULL AS CHAR(1)) AS qqhstv, CAST(NULL AS CHAR(1)) AS qqrcds,
CAST(NULL AS CHAR(2)) AS qqrcod, CAST(NULL AS DECIMAL(15,
0)) AS qqrss, CAST(NULL AS DECIMAL(15, 0)) AS qqrest,
CAST(NULL AS DECIMAL(15, 0)) AS qqridx, CAST(NULL AS DECIMAL(15,
0)) AS qqfkey, CAST(NULL AS DECIMAL(15, 0)) AS qqksel,
CAST(NULL AS DECIMAL(15, 0)) AS qqajn,
CAST(NULL AS VARCHAR(1000)) AS qqidxd,
CAST(NULL AS CHAR(1)) AS qqc11, CAST(NULL AS CHAR(1)) AS qqc12,
CAST(NULL AS CHAR(1)) AS qqc13, CAST(NULL AS CHAR(1)) AS qqc14,
CAST(NULL AS CHAR(1)) AS qqc15, CAST(NULL AS CHAR(1)) AS qqc16,
CAST(NULL AS CHAR(1)) AS qqc18, qqc21,
CAST(NULL AS CHAR(2)) AS qqc22, CAST(NULL AS CHAR(2)) AS qqc23,
CAST(NULL AS DECIMAL(15, 0)) AS qqi1, qqi2,
CAST(NULL AS DECIMAL(15, 0)) AS qqi3,
CAST(NULL AS DECIMAL(15, 0)) AS qqi4, CAST(NULL AS DECIMAL(15,
0)) AS qqi5, CAST(NULL AS DECIMAL(15, 0)) AS qqi6,
CAST(NULL AS DECIMAL(15, 0)) AS qqi7, qqi8, CAST(NULL AS DECIMAL(15, 0)) AS qqi9,
CAST(NULL AS DECIMAL(15, 0)) AS qqia, CAST(NULL AS DECIMAL(15,
0)) AS qqf1, CAST(NULL AS DECIMAL(15, 0)) AS qqf2,
CAST(NULL AS DECIMAL(15, 0)) AS qqf3,
CAST(NULL AS CHAR(6)) AS qqc61, CAST(NULL AS CHAR(8)) AS qqc81,
CAST(NULL AS CHAR(8)) AS qqc82, CAST(NULL AS CHAR(8)) AS qqc83,
CAST(NULL AS CHAR(8)) AS qqc84, CAST(NULL AS CHAR(10)) AS qqc101,
CAST(NULL AS CHAR(10)) AS qqc102, qqc103, qqc104,
CAST(NULL AS CHAR(10)) AS qqc105,
CAST(NULL AS CHAR(10)) AS qqc106,
CAST(NULL AS VARCHAR(128)) AS qqc181,
CAST(NULL AS VARCHAR(128)) AS qqc182,
CAST(NULL AS VARCHAR(128)) AS qqc183,
CAST(NULL AS VARCHAR(30)) AS qqc301,
CAST(NULL AS VARCHAR(30)) AS qqc302,
CAST(NULL AS VARCHAR(30)) AS qqc303, qq1000,
CAST(NULL AS TIMESTAMP) AS qqtim1,
CAST(NULL AS TIMESTAMP) AS qqtim2,
CAST(NULL AS VARCHAR(128)) AS qvqtbl,
CAST(NULL AS VARCHAR(128)) AS qvqlib,
CAST(NULL AS VARCHAR(128)) AS qvptbl,
CAST(NULL AS VARCHAR(128)) AS qvplib,
CAST(NULL AS VARCHAR(128)) AS qvinam,
CAST(NULL AS VARCHAR(128)) AS qvilib,
CAST(NULL AS CHAR(1)) AS qvqtbli, CAST(NULL AS CHAR(1)) AS qvptbli,
CAST(NULL AS CHAR(1)) AS qvinami, CAST(NULL AS CHAR(1)) AS qvbndy,
CAST(NULL AS CHAR(1)) AS qvjfano, CAST(NULL AS CHAR(1)) AS qvparpf,
CAST(NULL AS CHAR(1)) AS qvparpl, CAST(NULL AS CHAR(1)) AS qvc11,
CAST(NULL AS CHAR(1)) AS qvc12, CAST(NULL AS CHAR(1)) AS qvc13,
CAST(NULL AS CHAR(1)) AS qvc14, CAST(NULL AS CHAR(1)) AS qvc15,
CAST(NULL AS CHAR(1)) AS qvc16, CAST(NULL AS CHAR(1)) AS qvc17,
CAST(NULL AS CHAR(1)) AS qvc18, CAST(NULL AS CHAR(1)) AS qvc19,
CAST(NULL AS CHAR(1)) AS qvc1a, CAST(NULL AS CHAR(1)) AS qvc1b,
CAST(NULL AS CHAR(1)) AS qvc1c, CAST(NULL AS CHAR(1)) AS qvc1d,
CAST(NULL AS CHAR(1)) AS qvc1e, CAST(NULL AS CHAR(1)) AS qvc1f,
CAST(NULL AS CHAR(1)) AS qwc11, CAST(NULL AS CHAR(1)) AS qwc12,
CAST(NULL AS CHAR(1)) AS qwc13, CAST(NULL AS CHAR(1)) AS qwc14,
CAST(NULL AS CHAR(1)) AS qwc15, CAST(NULL AS CHAR(1)) AS qwc16,
CAST(NULL AS CHAR(1)) AS qwc17, CAST(NULL AS CHAR(1)) AS qwc18,
CAST(NULL AS CHAR(1)) AS qwc19, CAST(NULL AS CHAR(1)) AS qwc1a,
CAST(NULL AS CHAR(1)) AS qwc1b, CAST(NULL AS CHAR(1)) AS qwc1c,
CAST(NULL AS CHAR(1)) AS qwc1d, CAST(NULL AS CHAR(1)) AS qwc1e,
CAST(NULL AS CHAR(1)) AS qwc1f, CAST(NULL AS CHAR(2)) AS qvc21,
CAST(NULL AS CHAR(2)) AS qvc22, CAST(NULL AS CHAR(2)) AS qvc23,
CAST(NULL AS CHAR(2)) AS qvc24, CAST(NULL AS DECIMAL(15,
0)) AS qvctim, CAST(NULL AS DECIMAL(15, 0)) AS qvpard,
CAST(NULL AS DECIMAL(15, 0)) AS qvparu, CAST(NULL AS DECIMAL(15,
0)) AS qvparrc, CAST(NULL AS DECIMAL(15, 0)) AS qvrcnt,
CAST(NULL AS DECIMAL(15, 0)) AS qvfiles, CAST(NULL AS DECIMAL(15,
0)) AS qvp151, CAST(NULL AS DECIMAL(15, 0)) AS qvp152,
CAST(NULL AS DECIMAL(15, 0)) AS qvp153, CAST(NULL AS DECIMAL(15,
0)) AS qvp154, CAST(NULL AS DECIMAL(15, 0)) AS qvp155,
CAST(NULL AS DECIMAL(15, 0)) AS qvp156, CAST(NULL AS DECIMAL(15,
0)) AS qvp157, CAST(NULL AS DECIMAL(15, 0)) AS qvp158,
CAST(NULL AS DECIMAL(15, 0)) AS qvp159, CAST(NULL AS DECIMAL(15,
0)) AS qvp15a, CAST(NULL AS DECIMAL(15, 0)) AS qvp15b,
CAST(NULL AS DECIMAL(15, 0)) AS qvp15c, CAST(NULL AS DECIMAL(15,
0)) AS qvp15d, CAST(NULL AS DECIMAL(15, 0)) AS qvp15e,
CAST(NULL AS DECIMAL(15, 0)) AS qvp15f,
CAST(NULL AS CHAR(4)) AS qvc41, CAST(NULL AS CHAR(4)) AS qvc42,
CAST(NULL AS CHAR(4)) AS qvc43, CAST(NULL AS CHAR(4)) AS qvc44,
CAST(NULL AS CHAR(8)) AS qvc81, CAST(NULL AS CHAR(8)) AS qvc82,
CAST(NULL AS CHAR(8)) AS qvc83, CAST(NULL AS CHAR(8)) AS qvc84,
CAST(NULL AS CHAR(8)) AS qvc85, CAST(NULL AS CHAR(8)) AS qvc86,
CAST(NULL AS CHAR(8)) AS qvc87, CAST(NULL AS CHAR(8)) AS qvc88,
CAST(NULL AS CHAR(10)) AS qvc101, qvc102,
CAST(NULL AS CHAR(10)) AS qvc103, CAST(NULL AS CHAR(10)) AS qvc104,
CAST(NULL AS CHAR(10)) AS qvc105, CAST(NULL AS CHAR(10)) AS qvc106,
CAST(NULL AS CHAR(10)) AS qvc107, CAST(NULL AS CHAR(10)) AS qvc108,
CAST(NULL AS VARCHAR(128)) AS qvc1281,
CAST(NULL AS VARCHAR(128)) AS qvc1282,
CAST(NULL AS VARCHAR(128)) AS qvc1283,
CAST(NULL AS VARCHAR(128)) AS qvc1284,
CAST(NULL AS VARCHAR(300)) AS qvc3001,
CAST(NULL AS VARCHAR(300)) AS qvc3002,
CAST(NULL AS VARCHAR(300)) AS qvc3003,
CAST(NULL AS VARCHAR(300)) AS qvc3004,
CAST(NULL AS VARCHAR(300)) AS qvc3005,
CAST(NULL AS VARCHAR(300)) AS qvc3006,
CAST(NULL AS VARCHAR(300)) AS qvc3007,
CAST(NULL AS VARCHAR(300)) AS qvc3008,
CAST(NULL AS VARCHAR(500)) AS qvc5001,
CAST(NULL AS VARCHAR(500)) AS qvc5002,
CAST(NULL AS VARCHAR(1000)) AS qvc1000,
CAST(NULL AS VARCHAR(1000)) AS qwc1000,
CAST(NULL AS INTEGER) AS qqint01, CAST(NULL AS INTEGER) AS qqint02,
CAST(NULL AS INTEGER) AS qqint03, CAST(NULL AS INTEGER) AS qqint04,
CAST(NULL AS SMALLINT) AS qqsmint1,
CAST(NULL AS SMALLINT) AS qqsmint2,
CAST(NULL AS SMALLINT) AS qqsmint3,
CAST(NULL AS SMALLINT) AS qqsmint4,
CAST(NULL AS SMALLINT) AS qqsmint5,
CAST(NULL AS SMALLINT) AS qqsmint6,
CAST(NULL AS CLOB(2147483647)) AS qq1000l,
CAST(NULL AS CHAR(1)) AS qfc11, CAST(NULL AS CHAR(1)) AS qfc12,
CAST(NULL AS CHAR(1)) AS qfc13, CAST(NULL AS CLOB(2g)) AS qqclob2,
CAST(NULL AS CHAR(1)) AS qfc14, CAST(NULL AS CHAR(1)) AS qfc15,
CAST(NULL AS CHAR(1)) AS qfc16, CAST(NULL AS CLOB(2g)) AS qqclob3,
CAST(NULL AS CHAR(1)) AS qfc17, CAST(NULL AS CHAR(1)) AS qfc18,
CAST(NULL AS CHAR(1)) AS qfc19,
qqdbclob1,
CAST(NULL AS CHAR(1)) AS qfc1a, CAST(NULL AS CHAR(1)) AS qfc1b,
CAST(NULL AS CHAR(1)) AS qfc1c,
CAST(NULL AS nclob(1g)) AS qqdbclob2,
CAST(NULL AS CHAR(1)) AS qfc1d, CAST(NULL AS CHAR(1)) AS qfc1e,
CAST(NULL AS CHAR(1)) AS qfc1f, CAST(NULL AS BLOB(2g)) AS qqblob1,
CAST(NULL AS CHAR(1)) AS qxc11, CAST(NULL AS CHAR(1)) AS qxc12,
CAST(NULL AS CHAR(1)) AS qxc13, CAST(NULL AS CHAR(1)) AS qxc14,
CAST(NULL AS CHAR(1)) AS qxc15, CAST(NULL AS CHAR(1)) AS qxc16,
CAST(NULL AS CHAR(1)) AS qxc17, CAST(NULL AS CHAR(1)) AS qxc18,
CAST(NULL AS CHAR(1)) AS qxc19, CAST(NULL AS CHAR(1)) AS qxc1a,
CAST(NULL AS CHAR(1)) AS qxc1b, CAST(NULL AS CHAR(1)) AS qxc1c,
CAST(NULL AS CHAR(1)) AS qxc1d, CAST(NULL AS CHAR(1)) AS qxc1e,
CAST(NULL AS CHAR(2)) AS qxc21, CAST(NULL AS CHAR(2)) AS qxc22,
CAST(NULL AS CHAR(2)) AS qxc23, CAST(NULL AS CHAR(2)) AS qxc24,
CAST(NULL AS CHAR(2)) AS qxc25, CAST(NULL AS CHAR(2)) AS qxc26,
CAST(NULL AS CHAR(2)) AS qxc27, CAST(NULL AS CHAR(2)) AS qxc28,
CAST(NULL AS CHAR(2)) AS qxc29, CAST(NULL AS CHAR(4)) AS qxc41,
CAST(NULL AS CHAR(4)) AS qxc42, CAST(NULL AS CHAR(4) FOR BIT DATA)
AS qxc43, CAST(NULL AS CHAR(4)) AS qxc44,
CAST(NULL AS INTEGER) AS qqint05, CAST(NULL AS INTEGER) AS qqint06,
CAST(NULL AS INTEGER) AS qqint07, CAST(NULL AS INTEGER) AS qqint08,
CAST(NULL AS INTEGER) AS qqint09, CAST(NULL AS INTEGER) AS qqint0a,
CAST(NULL AS INTEGER) AS qqint0b, CAST(NULL AS INTEGER) AS qqint0c,
CAST(NULL AS INTEGER) AS qqint0d, CAST(NULL AS INTEGER) AS qqint0e,
CAST(NULL AS INTEGER) AS qqint0f,
CAST(NULL AS SMALLINT) AS qqsmint7,
CAST(NULL AS SMALLINT) AS qqsmint8,
CAST(NULL AS SMALLINT) AS qqsmint9,
CAST(NULL AS SMALLINT) AS qqsminta,
CAST(NULL AS SMALLINT) AS qqsmintb,
CAST(NULL AS SMALLINT) AS qqsmintc,
CAST(NULL AS SMALLINT) AS qqsmintd,
CAST(NULL AS SMALLINT) AS qqsminte,
CAST(NULL AS SMALLINT) AS qqsmintf FROM toystore.dbmonp RCDFMT qqqdbmn;

 

--
-- Note: IBM i 7.3 and above version
--
CREATE OR REPLACE VIEW toystore.dbmonv

                                      (qqrid, qqtime, qqjfld,
                                       qqrdbn, qqsys, qqjob,
                                       qquser, qqjnum, qqucnt,
                                       qqudef, qqstn, qqqdtn,
                                       qqqdtl, qqmatn, qqmatl,
                                       qqtln, qqtfn, qqtmn, qqptln,
                                       qqptfn, qqptmn, qqilnm,
                                       qqifnm, qqimnm, qqntnm,
                                       qqnlnm, qqstim, qqetim,
                                       qqkp, qqks, qqtotr, qqtmpr,
                                       qqjnp, qqept, qqdss, qqidxa,
                                       qqordg, qqgrpg, qqjng,
                                       qqunin, qqsubq, qqhstv,
                                       qqrcds, qqrcod, qqrss,
                                       qqrest, qqridx, qqfkey,
                                       qqksel, qqajn, qqidxd,
                                       qqc11, qqc12, qqc13, qqc14,
                                       qqc15, qqc16, qqc18, qqc21,
                                       qqc22, qqc23, qqi1, qqi2,
                                       qqi3, qqi4, qqi5, qqi6,
                                       qqi7, qqi8, qqi9, qqia,
                                       qqf1, qqf2, qqf3, qqc61,
                                       qqc81, qqc82, qqc83, qqc84,
                                       qqc101, qqc102, qqc103,
                                       qqc104, qqc105, qqc106,
                                       qqc181, qqc182, qqc183,
                                       qqc301, qqc302, qqc303,
                                       qq1000, qqtim1, qqtim2,
                                       qvqtbl, qvqlib, qvptbl,
                                       qvplib, qvinam, qvilib,
                                       qvqtbli, qvptbli, qvinami,
                                       qvbndy, qvjfano, qvparpf,
                                       qvparpl, qvc11, qvc12,
                                       qvc13, qvc14, qvc15, qvc16,
                                       qvc17, qvc18, qvc19, qvc1a,
                                       qvc1b, qvc1c, qvc1d, qvc1e,
                                       qvc1f, qwc11, qwc12, qwc13,
                                       qwc14, qwc15, qwc16, qwc17,
                                       qwc18, qwc19, qwc1a, qwc1b,
                                       qwc1c, qwc1d, qwc1e, qwc1f,
                                       qvc21, qvc22, qvc23, qvc24,
                                       qvctim, qvpard, qvparu,
                                       qvparrc, qvrcnt, qvfiles,
                                       qvp151, qvp152, qvp153,
                                       qvp154, qvp155, qvp156,
                                       qvp157, qvp158, qvp159,
                                       qvp15a, qvp15b, qvp15c,
                                       qvp15d, qvp15e, qvp15f,
                                       qvc41, qvc42, qvc43, qvc44,
                                       qvc81, qvc82, qvc83, qvc84,
                                       qvc85, qvc86, qvc87, qvc88,
                                       qvc101, qvc102, qvc103,
                                       qvc104, qvc105, qvc106,
                                       qvc107, qvc108, qvc1281,
                                       qvc1282, qvc1283, qvc1284,
                                       qvc3001, qvc3002, qvc3003,
                                       qvc3004, qvc3005, qvc3006,
                                       qvc3007, qvc3008, qvc5001,
                                       qvc5002, qvc1000, qwc1000,
                                       qqint01, qqint02, qqint03,
                                       qqint04, qqsmint1, qqsmint2,
                                       qqsmint3, qqsmint4,
                                       qqsmint5, qqsmint6, qq1000l,
                                       qfc11, qfc12, qfc13,
                                       qqclob2, qfc14, qfc15,
                                       qfc16, qqclob3, qfc17,
                                       qfc18, qfc19, qqdbclob1,
                                       qfc1a, qfc1b, qfc1c,
                                       qqdbclob2, qfc1d, qfc1e,
                                       qfc1f, qqblob1, qxc11,
                                       qxc12, qxc13, qxc14, qxc15,
                                       qxc16, qxc17, qxc18, qxc19,
                                       qxc1a, qxc1b, qxc1c, qxc1d,
                                       qxc1e, qxc21, qxc22, qxc23,
                                       qxc24, qxc25, qxc26, qxc27,
                                       qxc28, qxc29, qxc41, qxc42,
                                       qxc43, qxc44, qqint05,
                                       qqint06, qqint07, qqint08,
                                       qqint09, qqint0a, qqint0b,
                                       qqint0c, qqint0d, qqint0e,
                                       qqint0f, qqsmint7, qqsmint8,
                                       qqsmint9, qqsminta,
                                       qqsmintb, qqsmintc,
                                       qqsmintd, qqsminte, qqsmintf,
                                       QQTIM12A, QQTIM12B, QVP161,
                                       QVP162,   QQBGINT1, QQBGINT2 )
   AS SELECT qqrid, CAST(NULL AS TIMESTAMP)
   AS qqtime, CAST(NULL AS CHAR(46) FOR BIT DATA)
AS qqjfld, CAST(NULL AS CHAR(18)) AS qqrdbn,
CAST(NULL AS CHAR(8)) AS qqsys,
QQJOB, QQUSER, QQJNUM,
CAST(NULL AS DECIMAL(15, 0)) AS qqucnt,
CAST(NULL AS VARCHAR(100)) AS qqudef, CAST(NULL AS DECIMAL(15,
0)) AS qqstn, CAST(NULL AS DECIMAL(15, 0)) AS qqqdtn,
CAST(NULL AS DECIMAL(15, 0)) AS qqqdtl, CAST(NULL AS DECIMAL(15,
0)) AS qqmatn, CAST(NULL AS DECIMAL(15, 0)) AS qqmatl,
CAST(NULL AS CHAR(10)) AS qqtln, CAST(NULL AS CHAR(10)) AS qqtfn,
CAST(NULL AS CHAR(10)) AS qqtmn, CAST(NULL AS CHAR(10)) AS qqptln,
CAST(NULL AS CHAR(10)) AS qqptfn, CAST(NULL AS CHAR(10)) AS qqptmn,
CAST(NULL AS CHAR(10)) AS qqilnm, CAST(NULL AS CHAR(10)) AS qqifnm,
CAST(NULL AS CHAR(10)) AS qqimnm, CAST(NULL AS CHAR(10)) AS qqntnm,
CAST(NULL AS CHAR(10)) AS qqnlnm,
QQSTIM, QQETIM,
CAST(NULL AS CHAR(1)) AS qqkp,
CAST(NULL AS CHAR(1)) AS qqks, CAST(NULL AS DECIMAL(15,
0)) AS qqtotr, CAST(NULL AS DECIMAL(15, 0)) AS qqtmpr,
CAST(NULL AS DECIMAL(15, 0)) AS qqjnp, CAST(NULL AS DECIMAL(15,
0)) AS qqept, CAST(NULL AS CHAR(1)) AS qqdss,
CAST(NULL AS CHAR(1)) AS qqidxa, CAST(NULL AS CHAR(1)) AS qqordg,
CAST(NULL AS CHAR(1)) AS qqgrpg, CAST(NULL AS CHAR(1)) AS qqjng,
CAST(NULL AS CHAR(1)) AS qqunin, CAST(NULL AS CHAR(1)) AS qqsubq,
CAST(NULL AS CHAR(1)) AS qqhstv, CAST(NULL AS CHAR(1)) AS qqrcds,
CAST(NULL AS CHAR(2)) AS qqrcod, CAST(NULL AS DECIMAL(15,
0)) AS qqrss, CAST(NULL AS DECIMAL(15, 0)) AS qqrest,
CAST(NULL AS DECIMAL(15, 0)) AS qqridx, CAST(NULL AS DECIMAL(15,
0)) AS qqfkey, CAST(NULL AS DECIMAL(15, 0)) AS qqksel,
CAST(NULL AS DECIMAL(15, 0)) AS qqajn,
CAST(NULL AS VARCHAR(1000)) AS qqidxd,
CAST(NULL AS CHAR(1)) AS qqc11, CAST(NULL AS CHAR(1)) AS qqc12,
CAST(NULL AS CHAR(1)) AS qqc13, CAST(NULL AS CHAR(1)) AS qqc14,
CAST(NULL AS CHAR(1)) AS qqc15, CAST(NULL AS CHAR(1)) AS qqc16,
CAST(NULL AS CHAR(1)) AS qqc18, qqc21,
CAST(NULL AS CHAR(2)) AS qqc22, CAST(NULL AS CHAR(2)) AS qqc23,
CAST(NULL AS DECIMAL(15, 0)) AS qqi1, qqi2,
CAST(NULL AS DECIMAL(15, 0)) AS qqi3,
CAST(NULL AS DECIMAL(15, 0)) AS qqi4, CAST(NULL AS DECIMAL(15,
0)) AS qqi5, CAST(NULL AS DECIMAL(15, 0)) AS qqi6,
CAST(NULL AS DECIMAL(15, 0)) AS qqi7, qqi8, CAST(NULL AS DECIMAL(15, 0)) AS qqi9,
CAST(NULL AS DECIMAL(15, 0)) AS qqia, CAST(NULL AS DECIMAL(15,
0)) AS qqf1, CAST(NULL AS DECIMAL(15, 0)) AS qqf2,
CAST(NULL AS DECIMAL(15, 0)) AS qqf3,
CAST(NULL AS CHAR(6)) AS qqc61, CAST(NULL AS CHAR(8)) AS qqc81,
CAST(NULL AS CHAR(8)) AS qqc82, CAST(NULL AS CHAR(8)) AS qqc83,
CAST(NULL AS CHAR(8)) AS qqc84, CAST(NULL AS CHAR(10)) AS qqc101,
CAST(NULL AS CHAR(10)) AS qqc102, qqc103, qqc104,
CAST(NULL AS CHAR(10)) AS qqc105,
CAST(NULL AS CHAR(10)) AS qqc106,
CAST(NULL AS VARCHAR(128)) AS qqc181,
CAST(NULL AS VARCHAR(128)) AS qqc182,
CAST(NULL AS VARCHAR(128)) AS qqc183,
CAST(NULL AS VARCHAR(30)) AS qqc301,
CAST(NULL AS VARCHAR(30)) AS qqc302,
CAST(NULL AS VARCHAR(30)) AS qqc303, qq1000,
CAST(NULL AS TIMESTAMP) AS qqtim1,
CAST(NULL AS TIMESTAMP) AS qqtim2,
CAST(NULL AS VARCHAR(128)) AS qvqtbl,
CAST(NULL AS VARCHAR(128)) AS qvqlib,
CAST(NULL AS VARCHAR(128)) AS qvptbl,
CAST(NULL AS VARCHAR(128)) AS qvplib,
CAST(NULL AS VARCHAR(128)) AS qvinam,
CAST(NULL AS VARCHAR(128)) AS qvilib,
CAST(NULL AS CHAR(1)) AS qvqtbli, CAST(NULL AS CHAR(1)) AS qvptbli,
CAST(NULL AS CHAR(1)) AS qvinami, CAST(NULL AS CHAR(1)) AS qvbndy,
CAST(NULL AS CHAR(1)) AS qvjfano, CAST(NULL AS CHAR(1)) AS qvparpf,
CAST(NULL AS CHAR(1)) AS qvparpl, CAST(NULL AS CHAR(1)) AS qvc11,
CAST(NULL AS CHAR(1)) AS qvc12, CAST(NULL AS CHAR(1)) AS qvc13,
CAST(NULL AS CHAR(1)) AS qvc14, CAST(NULL AS CHAR(1)) AS qvc15,
CAST(NULL AS CHAR(1)) AS qvc16, CAST(NULL AS CHAR(1)) AS qvc17,
CAST(NULL AS CHAR(1)) AS qvc18, CAST(NULL AS CHAR(1)) AS qvc19,
CAST(NULL AS CHAR(1)) AS qvc1a, CAST(NULL AS CHAR(1)) AS qvc1b,
CAST(NULL AS CHAR(1)) AS qvc1c, CAST(NULL AS CHAR(1)) AS qvc1d,
CAST(NULL AS CHAR(1)) AS qvc1e, CAST(NULL AS CHAR(1)) AS qvc1f,
CAST(NULL AS CHAR(1)) AS qwc11, CAST(NULL AS CHAR(1)) AS qwc12,
CAST(NULL AS CHAR(1)) AS qwc13, CAST(NULL AS CHAR(1)) AS qwc14,
CAST(NULL AS CHAR(1)) AS qwc15, CAST(NULL AS CHAR(1)) AS qwc16,
CAST(NULL AS CHAR(1)) AS qwc17, CAST(NULL AS CHAR(1)) AS qwc18,
CAST(NULL AS CHAR(1)) AS qwc19, CAST(NULL AS CHAR(1)) AS qwc1a,
CAST(NULL AS CHAR(1)) AS qwc1b, CAST(NULL AS CHAR(1)) AS qwc1c,
CAST(NULL AS CHAR(1)) AS qwc1d, CAST(NULL AS CHAR(1)) AS qwc1e,
CAST(NULL AS CHAR(1)) AS qwc1f, CAST(NULL AS CHAR(2)) AS qvc21,
CAST(NULL AS CHAR(2)) AS qvc22, CAST(NULL AS CHAR(2)) AS qvc23,
CAST(NULL AS CHAR(2)) AS qvc24, CAST(NULL AS DECIMAL(15,
0)) AS qvctim, CAST(NULL AS DECIMAL(15, 0)) AS qvpard,
CAST(NULL AS DECIMAL(15, 0)) AS qvparu, CAST(NULL AS DECIMAL(15,
0)) AS qvparrc, CAST(NULL AS DECIMAL(15, 0)) AS qvrcnt,
CAST(NULL AS DECIMAL(15, 0)) AS qvfiles, CAST(NULL AS DECIMAL(15,
0)) AS qvp151, CAST(NULL AS DECIMAL(15, 0)) AS qvp152,
CAST(NULL AS DECIMAL(15, 0)) AS qvp153, CAST(NULL AS DECIMAL(15,
0)) AS qvp154, CAST(NULL AS DECIMAL(15, 0)) AS qvp155,
CAST(NULL AS DECIMAL(15, 0)) AS qvp156, CAST(NULL AS DECIMAL(15,
0)) AS qvp157, CAST(NULL AS DECIMAL(15, 0)) AS qvp158,
CAST(NULL AS DECIMAL(15, 0)) AS qvp159, CAST(NULL AS DECIMAL(15,
0)) AS qvp15a, CAST(NULL AS DECIMAL(15, 0)) AS qvp15b,
CAST(NULL AS DECIMAL(15, 0)) AS qvp15c, CAST(NULL AS DECIMAL(15,
0)) AS qvp15d, CAST(NULL AS DECIMAL(15, 0)) AS qvp15e,
CAST(NULL AS DECIMAL(15, 0)) AS qvp15f,
CAST(NULL AS CHAR(4)) AS qvc41, CAST(NULL AS CHAR(4)) AS qvc42,
CAST(NULL AS CHAR(4)) AS qvc43, CAST(NULL AS CHAR(4)) AS qvc44,
CAST(NULL AS CHAR(8)) AS qvc81, CAST(NULL AS CHAR(8)) AS qvc82,
CAST(NULL AS CHAR(8)) AS qvc83, CAST(NULL AS CHAR(8)) AS qvc84,
CAST(NULL AS CHAR(8)) AS qvc85, CAST(NULL AS CHAR(8)) AS qvc86,
CAST(NULL AS CHAR(8)) AS qvc87, CAST(NULL AS CHAR(8)) AS qvc88,
CAST(NULL AS CHAR(10)) AS qvc101, qvc102,
CAST(NULL AS CHAR(10)) AS qvc103, CAST(NULL AS CHAR(10)) AS qvc104,
CAST(NULL AS CHAR(10)) AS qvc105, CAST(NULL AS CHAR(10)) AS qvc106,
CAST(NULL AS CHAR(10)) AS qvc107, CAST(NULL AS CHAR(10)) AS qvc108,
CAST(NULL AS VARCHAR(128)) AS qvc1281,
CAST(NULL AS VARCHAR(128)) AS qvc1282,
CAST(NULL AS VARCHAR(128)) AS qvc1283,
CAST(NULL AS VARCHAR(128)) AS qvc1284,
CAST(NULL AS VARCHAR(300)) AS qvc3001,
CAST(NULL AS VARCHAR(300)) AS qvc3002,
CAST(NULL AS VARCHAR(300)) AS qvc3003,
CAST(NULL AS VARCHAR(300)) AS qvc3004,
CAST(NULL AS VARCHAR(300)) AS qvc3005,
CAST(NULL AS VARCHAR(300)) AS qvc3006,
CAST(NULL AS VARCHAR(300)) AS qvc3007,
CAST(NULL AS VARCHAR(300)) AS qvc3008,
CAST(NULL AS VARCHAR(500)) AS qvc5001,
CAST(NULL AS VARCHAR(500)) AS qvc5002,
CAST(NULL AS VARCHAR(1000)) AS qvc1000,
CAST(NULL AS VARCHAR(1000)) AS qwc1000,
CAST(NULL AS INTEGER) AS qqint01, CAST(NULL AS INTEGER) AS qqint02,
CAST(NULL AS INTEGER) AS qqint03, CAST(NULL AS INTEGER) AS qqint04,
CAST(NULL AS SMALLINT) AS qqsmint1,
CAST(NULL AS SMALLINT) AS qqsmint2,
CAST(NULL AS SMALLINT) AS qqsmint3,
CAST(NULL AS SMALLINT) AS qqsmint4,
CAST(NULL AS SMALLINT) AS qqsmint5,
CAST(NULL AS SMALLINT) AS qqsmint6,
CAST(NULL AS CLOB(2147483647)) AS qq1000l,
CAST(NULL AS CHAR(1)) AS qfc11, CAST(NULL AS CHAR(1)) AS qfc12,
CAST(NULL AS CHAR(1)) AS qfc13, CAST(NULL AS CLOB(2g)) AS qqclob2,
CAST(NULL AS CHAR(1)) AS qfc14, CAST(NULL AS CHAR(1)) AS qfc15,
CAST(NULL AS CHAR(1)) AS qfc16, CAST(NULL AS CLOB(2g)) AS qqclob3,
CAST(NULL AS CHAR(1)) AS qfc17, CAST(NULL AS CHAR(1)) AS qfc18,
CAST(NULL AS CHAR(1)) AS qfc19,
qqdbclob1,
CAST(NULL AS CHAR(1)) AS qfc1a, CAST(NULL AS CHAR(1)) AS qfc1b,
CAST(NULL AS CHAR(1)) AS qfc1c,
CAST(NULL AS nclob(1g)) AS qqdbclob2,
CAST(NULL AS CHAR(1)) AS qfc1d, CAST(NULL AS CHAR(1)) AS qfc1e,
CAST(NULL AS CHAR(1)) AS qfc1f, CAST(NULL AS BLOB(2g)) AS qqblob1,
CAST(NULL AS CHAR(1)) AS qxc11, CAST(NULL AS CHAR(1)) AS qxc12,
CAST(NULL AS CHAR(1)) AS qxc13, CAST(NULL AS CHAR(1)) AS qxc14,
CAST(NULL AS CHAR(1)) AS qxc15, CAST(NULL AS CHAR(1)) AS qxc16,
CAST(NULL AS CHAR(1)) AS qxc17, CAST(NULL AS CHAR(1)) AS qxc18,
CAST(NULL AS CHAR(1)) AS qxc19, CAST(NULL AS CHAR(1)) AS qxc1a,
CAST(NULL AS CHAR(1)) AS qxc1b, CAST(NULL AS CHAR(1)) AS qxc1c,
CAST(NULL AS CHAR(1)) AS qxc1d, CAST(NULL AS CHAR(1)) AS qxc1e,
CAST(NULL AS CHAR(2)) AS qxc21, CAST(NULL AS CHAR(2)) AS qxc22,
CAST(NULL AS CHAR(2)) AS qxc23, CAST(NULL AS CHAR(2)) AS qxc24,
CAST(NULL AS CHAR(2)) AS qxc25, CAST(NULL AS CHAR(2)) AS qxc26,
CAST(NULL AS CHAR(2)) AS qxc27, CAST(NULL AS CHAR(2)) AS qxc28,
CAST(NULL AS CHAR(2)) AS qxc29, CAST(NULL AS CHAR(4)) AS qxc41,
CAST(NULL AS CHAR(4)) AS qxc42, CAST(NULL AS CHAR(4) FOR BIT DATA)
AS qxc43, CAST(NULL AS CHAR(4)) AS qxc44,
CAST(NULL AS INTEGER) AS qqint05, CAST(NULL AS INTEGER) AS qqint06,
CAST(NULL AS INTEGER) AS qqint07, CAST(NULL AS INTEGER) AS qqint08,
CAST(NULL AS INTEGER) AS qqint09, CAST(NULL AS INTEGER) AS qqint0a,
CAST(NULL AS INTEGER) AS qqint0b, CAST(NULL AS INTEGER) AS qqint0c,
CAST(NULL AS INTEGER) AS qqint0d, CAST(NULL AS INTEGER) AS qqint0e,
CAST(NULL AS INTEGER) AS qqint0f,
CAST(NULL AS SMALLINT) AS qqsmint7,
CAST(NULL AS SMALLINT) AS qqsmint8,
CAST(NULL AS SMALLINT) AS qqsmint9,
CAST(NULL AS SMALLINT) AS qqsminta,
CAST(NULL AS SMALLINT) AS qqsmintb,
CAST(NULL AS SMALLINT) AS qqsmintc,
CAST(NULL AS SMALLINT) AS qqsmintd,
CAST(NULL AS SMALLINT) AS qqsminte,
CAST(NULL AS SMALLINT) AS qqsmintf,
CAST(NULL AS TIMESTAMP(12)) AS QQTIM12A,
CAST(NULL AS TIMESTAMP(12)) AS QQTIM12B,
CAST(NULL AS DECIMAL(15, 0)) AS QVP161,
CAST(NULL AS DECIMAL(15, 0)) AS QVP162,
CAST(NULL AS BIGINT) AS QQBGINT1,
CAST(NULL AS BIGINT) AS QQBGINT2
FROM toystore.dbmonp RCDFMT qqqdbmn;

Step 3: Create the SQL Instead of Trigger

CREATE OR REPLACE TRIGGER toystore.sqliot
   INSTEAD OF INSERT ON toystore.dbmonv REFERENCING NEW AS new_var
   FOR EACH ROW MODE db2row
-- Note, LOB locators are not supported with COMMIT=*NONE
   SET OPTION COMMIT = *CHG
-- Add these to the SET OPTION, if you have a build failure and need to debug your INCLUDE code: Message: [SQL7032]
 ,dbgview = *source, output=*PRINT
   BEGIN
      IF new_var.QQRID = 1000 THEN
         INSERT INTO TOYSTORE.MONOUT
         VALUES(new_var.QQSTIM, new_var.QQETIM, new_var.qqc21, new_var.QQI8,
                new_var.qvc102, new_var.QQC104, new_var.QQC103, new_var.QQJOB,
                new_var.QQUSER, new_var.QQJNUM, new_var.QQI2, new_var.qq1000, new_var.qqdbclob1);
      END IF;
   END;


Step 4: Lastly, start the database monitor, pointing the command to the view and focusing on query activity related to any table within the TOYSTORE library.

STRDBMON OUTFILE(TOYSTORE/DBMONV) INCSYSSQL(*YES)  FTRFILE((TOYSTORE/*ALL))  JOB(*ALL/*ALL/*ALL)  TYPE(*DETAIL)  HOSTVAR(*CONDENSED)




Methodology 2 - Insertable View with an SQL Instead of Trigger that utilizes INCLUDE C support

Step 1: Same as above

Step 2: Same as above

Step 3: Create the SQL Instead of Trigger, using INCLUDE support that was added to IBM i 7.1 and above in November, 2016.

Establish the following ILE C source code in SCOTTF/QCSRC(IOT2)

/* INCLUDE source for INSTEAD OF TRIGGER */
{
#include "recio.h"
#include "sqludf.h"
_RFILE *fp;
_RIOFB_T *rfb;
#define _RCDLEN 2130
unsigned char rcd[_RCDLEN];         
char *rcdp;
long lob_length;
short lob_length_short;
unsigned char lob[1000];
int rc;
extern int sqludf_length(                                              
    udf_locator        *udfloc_p,       /* in:  Pointer to user-provided LOB */
                                        /*      locator value.               */
    long               *return_len_p    /* in/out: Pointer to where the      */
                                        /*      length is to be returned     */
);                                                                     
extern int sqludf_substr(                                              
    udf_locator        *udfloc_p,       /* in:  Pointer to user-provided LOB */
                                        /*      locator value.               */
    long                start,          /* in:  Substring start value, first */
                                        /*      byte is byte 1.              */
    long                length,         /* in:  Number of bytes to be        */
                                        /*      returned.                    */
    unsigned char      *buffer_p,       /* in/out: Pointer to the buffer     */
                                        /*      into which the bytes are to  */
                                        /*      be placed.                   */
    long               *return_len_p    /* in/out: Pointer to where the      */
                                        /*      number of bytes actually     */
                                        /*      returned is to be placed     */
                                        /*      (can be smaller than length) */
);                                                                     
/* If this is a 1000 record, write a subset of the
   monitor columns to the TOYSTORE/MONOUT file */
if (NEW_VAR.QQRID == 1000) {
  if ((fp = _Ropen("TOYSTORE/MONOUT", "ar+")) == NULL)
  {
   printf("open for write failed\n");
   exit(1);
  }
  rcdp = rcd;
  memcpy(rcdp, &NEW_VAR.QQSTIM, sizeof(NEW_VAR.QQSTIM));
  rcdp = rcdp + sizeof(NEW_VAR.QQSTIM);
  memcpy(rcdp, &NEW_VAR.QQETIM, sizeof(NEW_VAR.QQETIM));
  rcdp = rcdp + sizeof(NEW_VAR.QQETIM);
  memcpy(rcdp, &NEW_VAR.QQC21, sizeof(NEW_VAR.QQC21));
  rcdp = rcdp + sizeof(NEW_VAR.QQC21);
  memcpy(rcdp, &NEW_VAR.QQI8, sizeof(NEW_VAR.QQI8));
  rcdp = rcdp + sizeof(NEW_VAR.QQI8);
  memcpy(rcdp, &NEW_VAR.QVC102, sizeof(NEW_VAR.QVC102));
  rcdp = rcdp + sizeof(NEW_VAR.QVC102);
  memcpy(rcdp, &NEW_VAR.QQC104, sizeof(NEW_VAR.QQC104));
  rcdp = rcdp + sizeof(NEW_VAR.QQC104);
  memcpy(rcdp, &NEW_VAR.QQC103, sizeof(NEW_VAR.QQC103));
  rcdp = rcdp + sizeof(NEW_VAR.QQC103);
  memcpy(rcdp, &NEW_VAR.QQJOB, sizeof(NEW_VAR.QQJOB));
  rcdp = rcdp + sizeof(NEW_VAR.QQJOB);
  memcpy(rcdp, &NEW_VAR.QQUSER, sizeof(NEW_VAR.QQUSER));
  rcdp = rcdp + sizeof(NEW_VAR.QQUSER);
  memcpy(rcdp, &NEW_VAR.QQJNUM, sizeof(NEW_VAR.QQJNUM));
  rcdp = rcdp + sizeof(NEW_VAR.QQJNUM);
  memcpy(rcdp, &NEW_VAR.QQI2, sizeof(NEW_VAR.QQI2));
  rcdp = rcdp + sizeof(NEW_VAR.QQI2);
  memcpy(rcdp, &NEW_VAR.QQ1000, sizeof(NEW_VAR.QQ1000));
  rcdp = rcdp + sizeof(NEW_VAR.QQ1000);
  rc = sqludf_substr(&NEW_VAR.QQDBCLOB1, 1, sizeof(lob),
                   lob, &lob_length);      
  if (rc == 0 & lob_length > 0) {   
    /* Convert from byte count to character count */
    lob_length_short = lob_length/2;
    memcpy(rcdp, &lob_length_short, sizeof(lob_length_short));
    rcdp = rcdp + sizeof(lob_length_short);
    memcpy(rcdp, &lob, sizeof(lob));
    rcdp = rcdp + sizeof(lob);
    /* Free the LOB locator */
    rc = sqludf_free_locator(&NEW_VAR.QQDBCLOB1);
  } else {
    lob_length_short = 0;
    memcpy(rcdp, &lob_length_short, sizeof(lob_length_short));
  }
  rfb = _Rwrite(fp, rcd, _RCDLEN);
  _Rclose(fp);
  }
}

Create the IOT

cl: addlible QSYSINC;

--
-- Create the IOT
--
CREATE OR REPLACE TRIGGER toystore.dbmoniot
   INSTEAD OF INSERT ON toystore.dbmonv REFERENCING NEW AS new_var
   FOR EACH ROW MODE db2row
-- Note, LOB locators are not supported with COMMIT=*NONE
   SET OPTION COMMIT = *CHG
-- Add these to the SET OPTION, if you have a build failure and need to debug your INCLUDE code: Message: [SQL7032]
 ,dbgview = *source, output=*PRINT
   BEGIN
      INCLUDE scottf / qcsrc(iot2);
   END;

Step 4: Same as above

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"All Versions","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
21 January 2020

UID

ibm11169752