I have the following trigger:
--#SET TERMINATOR !
CREATE TRIGGER CROSS_REFF_TRIG
AFTER INSERT ON NEW_CATALOG
REFERENCING NEW AS nnn
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
DECLARE reason VARCHAR(70);
DECLARE OUT_SQLCODE1 INTEGER;
CALL execute_immedia te
('INSERT INTO CROSS_REFERENCE
WITH T1 (QUERY_DESCR) AS
(VALUES( ''CONVERT JOIN IN SUBSELECT - CORELLATED OR NOT CORRELATED
SUBQUERY'' )),
T2(ItemName,MAX _ROW#) AS
(SELECT DISTINCT STRIP(KEY_WORD) ,MAX(ROW#)
FROM CROSS_REFERENCE
GROUP BY STRIP(KEY_WORD) ),
T3(MAX_ROW#,ITE M_NAME,ITEM_COU NT) AS
(SELECT MAX_ROW#,ITEMNA ME AS ITEM_NAME,count (*) AS
QTY_USED FROM T1,T2
WHERE (LENGTH(STRIP(Q UERY_DESCR)) - LENGTH(REPLACE
(STRIP(QUERY_DE SCR),ITEMNAME,' '''))) 0
GROUP BY ITEMNAME,MAX_RO W#)
SELECT MAX_ROW# + 1,ITEM_NAME ,''SUBSL'' ||'' '' || CHAR(13)||''
''||QUERY_DESCR FROM T3,T1',OUT_SQLC ODE1);
SET reason =
CASE WHEN OUT_SQLCODE1 <0
THEN CHAR(OUT_SQLCOD E1)
ELSE NULL END;
IF reason IS NOT NULL THEN
SIGNAL SQLSTATE '7500S' (reason);
END IF;
END!
It is working perfect - doing mutible inserts in corresponding groups.
But when i replace
(VALUES( ''CONVERT JOIN IN SUBSELECT - CORELLATED OR NOT CORRELATED
SUBQUERY'' )),
on (SELECT nnn.QUERY_DESC FROM NEW_CATALOG),
The following trigger generating sqlcode -206:
--#SET TERMINATOR !
CREATE TRIGGER CROSS_REFF_TRIG
AFTER INSERT ON NEW_CATALOG
REFERENCING NEW AS nnn
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
DECLARE reason VARCHAR(70);
DECLARE OUT_SQLCODE1 INTEGER;
CALL execute_immedia te
('INSERT INTO CROSS_REFERENCE
WITH T1 (QUERY_DESCR) AS
(SELECT nnn.QUERY_DESC FROM NEW_CATALOG),
T2(ItemName,MAX _ROW#) AS
(SELECT DISTINCT STRIP(KEY_WORD) ,MAX(ROW#)
FROM CROSS_REFERENCE
GROUP BY STRIP(KEY_WORD) ),
T3(MAX_ROW#,ITE M_NAME,ITEM_COU NT) AS
(SELECT MAX_ROW#,ITEMNA ME AS ITEM_NAME,count (*) AS
QTY_USED FROM T1,T2
WHERE (LENGTH(STRIP(Q UERY_DESCR)) - LENGTH(REPLACE
(STRIP(QUERY_DE SCR),ITEMNAME,' '''))) 0
GROUP BY ITEMNAME,MAX_RO W#)
SELECT MAX_ROW# + 1,ITEM_NAME ,''SUBSL'' ||'' '' || CHAR(13)||''
''||QUERY_DESCR FROM T3,T1',OUT_SQLC ODE1);
SET reason =
CASE WHEN OUT_SQLCODE1 <0
THEN CHAR(OUT_SQLCOD E1)
ELSE NULL END;
IF reason IS NOT NULL THEN
SIGNAL SQLSTATE '7500S' (reason);
END IF;
END!
Application raised error with diagnostic text: "-206
Please Help.
--
Message posted via http://www.dbmonster.com
--#SET TERMINATOR !
CREATE TRIGGER CROSS_REFF_TRIG
AFTER INSERT ON NEW_CATALOG
REFERENCING NEW AS nnn
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
DECLARE reason VARCHAR(70);
DECLARE OUT_SQLCODE1 INTEGER;
CALL execute_immedia te
('INSERT INTO CROSS_REFERENCE
WITH T1 (QUERY_DESCR) AS
(VALUES( ''CONVERT JOIN IN SUBSELECT - CORELLATED OR NOT CORRELATED
SUBQUERY'' )),
T2(ItemName,MAX _ROW#) AS
(SELECT DISTINCT STRIP(KEY_WORD) ,MAX(ROW#)
FROM CROSS_REFERENCE
GROUP BY STRIP(KEY_WORD) ),
T3(MAX_ROW#,ITE M_NAME,ITEM_COU NT) AS
(SELECT MAX_ROW#,ITEMNA ME AS ITEM_NAME,count (*) AS
QTY_USED FROM T1,T2
WHERE (LENGTH(STRIP(Q UERY_DESCR)) - LENGTH(REPLACE
(STRIP(QUERY_DE SCR),ITEMNAME,' '''))) 0
GROUP BY ITEMNAME,MAX_RO W#)
SELECT MAX_ROW# + 1,ITEM_NAME ,''SUBSL'' ||'' '' || CHAR(13)||''
''||QUERY_DESCR FROM T3,T1',OUT_SQLC ODE1);
SET reason =
CASE WHEN OUT_SQLCODE1 <0
THEN CHAR(OUT_SQLCOD E1)
ELSE NULL END;
IF reason IS NOT NULL THEN
SIGNAL SQLSTATE '7500S' (reason);
END IF;
END!
It is working perfect - doing mutible inserts in corresponding groups.
But when i replace
(VALUES( ''CONVERT JOIN IN SUBSELECT - CORELLATED OR NOT CORRELATED
SUBQUERY'' )),
on (SELECT nnn.QUERY_DESC FROM NEW_CATALOG),
The following trigger generating sqlcode -206:
--#SET TERMINATOR !
CREATE TRIGGER CROSS_REFF_TRIG
AFTER INSERT ON NEW_CATALOG
REFERENCING NEW AS nnn
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
DECLARE reason VARCHAR(70);
DECLARE OUT_SQLCODE1 INTEGER;
CALL execute_immedia te
('INSERT INTO CROSS_REFERENCE
WITH T1 (QUERY_DESCR) AS
(SELECT nnn.QUERY_DESC FROM NEW_CATALOG),
T2(ItemName,MAX _ROW#) AS
(SELECT DISTINCT STRIP(KEY_WORD) ,MAX(ROW#)
FROM CROSS_REFERENCE
GROUP BY STRIP(KEY_WORD) ),
T3(MAX_ROW#,ITE M_NAME,ITEM_COU NT) AS
(SELECT MAX_ROW#,ITEMNA ME AS ITEM_NAME,count (*) AS
QTY_USED FROM T1,T2
WHERE (LENGTH(STRIP(Q UERY_DESCR)) - LENGTH(REPLACE
(STRIP(QUERY_DE SCR),ITEMNAME,' '''))) 0
GROUP BY ITEMNAME,MAX_RO W#)
SELECT MAX_ROW# + 1,ITEM_NAME ,''SUBSL'' ||'' '' || CHAR(13)||''
''||QUERY_DESCR FROM T3,T1',OUT_SQLC ODE1);
SET reason =
CASE WHEN OUT_SQLCODE1 <0
THEN CHAR(OUT_SQLCOD E1)
ELSE NULL END;
IF reason IS NOT NULL THEN
SIGNAL SQLSTATE '7500S' (reason);
END IF;
END!
Application raised error with diagnostic text: "-206
Please Help.
--
Message posted via http://www.dbmonster.com
Comment