From 541ea7f1e2fccf8025ac0add445d64afda747479 Mon Sep 17 00:00:00 2001 From: Alex Zaw Date: Wed, 25 Feb 2026 23:00:55 +0000 Subject: [PATCH] Update Function GENERATE_SQL --- CISTOOLS/Functions/GENERATE_SQL.sql | 107 +++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) diff --git a/CISTOOLS/Functions/GENERATE_SQL.sql b/CISTOOLS/Functions/GENERATE_SQL.sql index d6cf790..c7de98f 100644 --- a/CISTOOLS/Functions/GENERATE_SQL.sql +++ b/CISTOOLS/Functions/GENERATE_SQL.sql @@ -1 +1,106 @@ -@@\@^@ % %@@@@Km@M@ %@M]@k@ %@M]@@@}\}@@k@ %@M]@@@}\}@@]@ %@M]@@@ %@@ %@Km@ %@@ %@@@ %@@@@ %@@@@~@\@k@ %@~@\@k@ %@~@\@k@ %@~@Mk@k@]@k@ %@~@\@k@ %@~@\@k@ %@~@\@@@ %@ %@@mm@@^@ %@m@@M@@]@^@ %@m@@M@@]@^@ %@m@@@@^@ %@@k@@k@@@M@@]@@}}@^@ %@@@@@}}@ %@ %@m@~@m@^@ %@^@ %@M@@k@@k@@]@~@M@@M@@]@k@@M@@]@k@@M@@]]@^@ %@m@~@m@M@@k@}KOa}@]@^@ %@m@n@@ %@M@@@@ %@@M@@]@~@}}@ %@@M@@]@~@}\}@]@@ %@@~@@M@@k@@k@m@`@@]@^@ %@@~@@M@@k@m@N@@]@^@ %@@^@ %@@k@@k@mm@ %@@k@@k@@ %@ %@M@ %@\@ %@@M@ %@M@ %@@ %@}\}@@}}@ %@@ %@]@ %@@ %@m@ %@@ %@@ %@M@ %@@ %@}\}@@@ %@}}@ %@]@ %]@ %]@@M@m@]@ %@@M@ %@K@m@M@ %m@k@}\}@k@@M@@k@}}@]@]@ %]@ %@@~@@ %@mm@@@@ %@m@Ln@}}@ %@mm@~@@M@ %@M@@k@}\}@]@k@mm@]@ %@@~@@M@@k@@]@ %@@^@ %@@K@m@M@mm@~n@@k@ %mmm@~n@@k@mm@~n@@k@ %mmm@~n@}}@]@^@ %@@@@M@@]@@@m@^@ %@m@@@@@@^@ %@@K@m@~@@^@ %@@K@m@~@M@ %@@M@@M@@M@@M@@]@@@M@@]@]@]@]@ %@@K@m@ %@@M@@]@Ln@}}@ %@@n@@]@^@ %@@K@m@@@@ %@m@~@}ւ@Ֆ@Ɩ}@^@ %@@^@ %@m@~@@K@m@^@ %@m@^@ %@m@^@ %@@^@ % %@@@@@Km@ %M@@@}ւ@Ձ}@k@ %@@}Ӊ@Ձ}@k@ %@@}@ւ@㨗}@]@^@ % %@@@@Km@ %@}Dž@@ƙ@ւ}@^@ % %@ \ No newline at end of file +SET PATH *LIBL ; + +CREATE OR REPLACE FUNCTION CISTOOLS.GENERATE_SQL ( + INOBJ VARCHAR(256) , + INLIB VARCHAR(128) DEFAULT '*ALL' , + INTYP VARCHAR(128) DEFAULT '*ALL' ) + RETURNS VARCHAR(32000) + LANGUAGE SQL + SPECIFIC CISTOOLS.GENERATE_SQL + NOT DETERMINISTIC + MODIFIES SQL DATA + CALLED ON NULL INPUT + SET OPTION ALWBLK = *ALLREAD , + ALWCPYDTA = *OPTIMIZE , + COMMIT = *NONE , + DECRESULT = (31, 31, 00) , + DYNDFTCOL = *NO , + DYNUSRPRF = *OWNER , + SRTSEQ = *HEX + BEGIN +DECLARE RS RESULT_SET_LOCATOR VARYING ; +DECLARE NOT_FOUND VARCHAR ( 256 ) ; +DECLARE RETURN_VAL VARCHAR ( 32000 ) ; +DECLARE SPLIT_POS SMALLINT DEFAULT 0 ; +DECLARE LIB , TYP , OBJ VARCHAR ( 128 ) DEFAULT '' ; +DECLARE CONTINUE HANDLER FOR SQLSTATE '01532' +BEGIN +SET RETURN_VAL = NOT_FOUND ; +END ; +SET ( LIB , TYP , OBJ ) = ( UPPER ( INLIB ) , UPPER ( INTYP ) , UPPER ( INOBJ )) ; +SET SPLIT_POS = REGEXP_INSTR ( OBJ , '[.|/]' ) ; +IF SPLIT_POS > 0 +AND ( LIB IS NULL +OR TRIM ( LIB ) = '' +OR TRIM ( LIB ) = '*ALL' ) THEN +SET LIB = SUBSTR ( OBJ , 1 , SPLIT_POS - 1 ) ; +SET OBJ = SUBSTR ( OBJ , SPLIT_POS + 1 ) ; +END IF ; +SELECT OBJLONGNAME , OBJLIB , SQL_OBJECT_TYPE +INTO OBJ , LIB , TYP +FROM +TABLE ( +SELECT * +FROM TABLE ( +VALUES ( +CASE LIB +WHEN '*ALL' THEN '' +ELSE LIB +END ) +UNION ALL +SELECT SCHEMA_NAME +FROM LIBLIST +UNION ALL +VALUES ( +CASE LIB +WHEN '*ALL' THEN LIB +ELSE '' +END ) +) +) X ( LIB_NAME ) +JOIN TABLE ( +QSYS2 . OBJECT_STATISTICS ( +LIB_NAME , '*ALL' , NULLIF ( OBJ , '' ) ) +) +ON 1 = 1 +WHERE SQL_OBJECT_TYPE IS NOT NULL +AND LIB_NAME <> '' +AND SQL_OBJECT_TYPE = COALESCE ( +NULLIF ( TYP , '*ALL' ) , SQL_OBJECT_TYPE ) +AND OBJ = COALESCE ( OBJLONGNAME , OBJNAME ) +LIMIT 1 ; +CALL QSYS2 . GENERATE_SQL ( DATABASE_OBJECT_NAME => OBJ , +DATABASE_OBJECT_LIBRARY_NAME => LIB , DATABASE_OBJECT_TYPE => TYP , +CREATE_OR_REPLACE_OPTION => '1' ) ; +ASSOCIATE RESULT SET LOCATOR ( RS ) WITH PROCEDURE GENERATE_SQL ; +ALLOCATE SQL_CUR CURSOR FOR RESULT SET RS ; +SET CISTOOLS . SQL_STATEMENT = NULL ; +SET CISTOOLS . SQL_STATEMENT = ( +SELECT TRIM ( LISTAGG ( CAST ( TRIM ( SRCDTA ) AS VARCHAR ( 32000 ) ) ) ) +FROM QTEMP . Q_GENSQL +WHERE TRIM ( SRCDTA ) <> '' +AND SRCSEQ > 6 ) ; +IF CISTOOLS . SQL_STATEMENT IS NULL THEN +SET RETURN_VAL = 'Object Not Found' ; +END IF ; +SET RETURN_VAL = CISTOOLS . SQL_STATEMENT ; +CLOSE SQL_CUR ; +RETURN RETURN_VAL ; +END ; + +COMMENT ON PARAMETER SPECIFIC FUNCTION CISTOOLS.GENERATE_SQL +( INOBJ IS 'Object Name' , + INLIB IS 'Library Name' , + INTYP IS 'SQL Object Type' ) ; + +LABEL ON SPECIFIC FUNCTION CISTOOLS.GENERATE_SQL + IS 'Generate SQL From Object' ; + +GRANT ALTER , EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GENERATE_SQL +TO AMAPICS WITH GRANT OPTION ; + +GRANT EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GENERATE_SQL +TO PUBLIC ; +