News
Abstract
STRDBMON Over a View (Enables faster SQL statement auditing)
Content
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
Was this topic helpful?
Document Information
Modified date:
21 January 2020
UID
ibm11169752