From 380edb7e32051087c1b53a35f2bf79819ffc7a58 Mon Sep 17 00:00:00 2001 From: Alex Zaw Date: Wed, 25 Feb 2026 23:01:02 +0000 Subject: [PATCH] Update Function GET_DESCRIPTOR --- CISTOOLS/Functions/GET_DESCRIPTOR.sql | 306 +++++++++++++++++++++++++- 1 file changed, 305 insertions(+), 1 deletion(-) diff --git a/CISTOOLS/Functions/GET_DESCRIPTOR.sql b/CISTOOLS/Functions/GET_DESCRIPTOR.sql index 27557c0..4c18b9a 100644 --- a/CISTOOLS/Functions/GET_DESCRIPTOR.sql +++ b/CISTOOLS/Functions/GET_DESCRIPTOR.sql @@ -1 +1,305 @@ -âÅã@×ÁãÈ@\ÓÉÂÓ@^@ % %ÃÙÅÁãÅ@ÖÙ@ÙÅ×ÓÁÃÅ@ÆäÕÃãÉÖÕ@ÃÉâãÖÖÓâKÇÅãmÄÅâÃÙÉ×ãÖÙ@M@ %âØÓâãÔã@åÁÙÃÈÁÙMóòððð]@]@ %ÙÅãäÙÕâ@ãÁÂÓÅ@M@ %ÃÖÓäÔÕÃÁÙÄÉÕÁÓÉãè@ÂÉÇÉÕã@k@ %ÄÁãÅãÉÔÅÃÖÄÅ@ÉÕãÅÇÅÙ@k@ %ÂÁâÅÄÂÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÂÁâÅÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÂÁâÅÓÉÂÙÁÙèÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÂÁâÅãÁÂÓÅÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÃÖÓäÔÕÃÃâÉÄ@ÉÕãÅÇÅÙ@k@ %ÃÖÓäÔÕÄÂÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÃÖÓäÔÕÇÅÕÅÙÁãÅÄ@ÉÕãÅÇÅÙ@k@ %ÃÖÓäÔÕÇÅÕÅÙÁãÉÖÕãè×Å@ÉÕãÅÇÅÙ@k@ %ÃÖÓäÔÕÈÉÄÄÅÕ@ÉÕãÅÇÅÙ@k@ %ÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÃÖÓäÔÕÙÖæÃÈÁÕÇÅ@ÉÕãÅÇÅÙ@k@ %ÃÖÓäÔÕÓÉÂÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÃÖÓäÔÕãÂÓÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÃÖÓäÔÕÁÓÓÖæä×ÄÁãÅ@ÉÕãÅÇÅÙ@k@ %ÃÖÙÙÅÓÁãÉÖÕÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÃäÙâÖÙÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÃÖÓäÔÕÓÁÂÅÓ@åÁÙÃÈÁÙMöð]@k@ %×ÁÙÁÔÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÙÅâäÓãâÅãÙÖæ@ÂÉÇÉÕã@k@ %âèâãÅÔÃÖÓäÔÕÕÁÔÅ@ÃÈÁÙMñð]@k@ %ÒÅèÔÅÔÂÅÙ@ÉÕãÅÇÅÙ@k@ %ÃÖÓäÔÕÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@ %ÃÖÓäÔÕÓÅåÅÓ@ÉÕãÅÇÅÙ@k@ %ÖÂÑÅÃãÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %ÉâÕäÓÓÁÂÓÅ@ÉÕãÅÇÅÙ@k@ %ÖÃãÅãÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@ %×ÁÙÁÔÔÖÄÅ@ÉÕãÅÇÅÙ@k@ %×ÁÙÁÔÖÙÄ×Öâ@ÉÕãÅÇÅÙ@k@ %ÖÙÄÉÕÁÓ×Öâ@ÉÕãÅÇÅÙ@k@ %×ÁÙÁÔâ×ÅÃÉÆÉÃÄÂ@åÁÙÃÈÁÙMñòø]@k@ %×ÁÙÁÔâ×ÅÃÉÆÉÃãÁÂÓÅ@åÁÙÃÈÁÙMñòø]@k@ %×ÁÙÁÔâ×ÅÃÉÆÉÃÓÉÂ@åÁÙÃÈÁÙMñòø]@k@ %×ÙÅÃÉâÉÖÕ@ÉÕãÅÇÅÙ@k@ %ÙÅãäÙÕÁÙÙÁèâÉéÅ@ÉÕãÅÇÅÙ@k@ %ÙÅãäÙÕÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@ %ÙÅãäÙÕÖÃãÅãÓÅÕÇãÈ@ÉÕãÅÇÅÙ@k@ %âÃÁÓÅ@ÉÕãÅÇÅÙ@k@ %ÄÁãÁãè×Å@ÉÕãÅÇÅÙ@k@ %âØÓãè×Å@åÁÙÃÈÁÙMñòø]@k@ %ÉâäÕÕÁÔÅÄ@ÉÕãÅÇÅÙ@k@ %äÄãÃÁãÁÓÖÇ@åÁÙÃÈÁÙMñòø]@k@ %äÄãÕÁÔÅ@åÁÙÃÈÁÙMñòø]@k@ %äÄãâÃÈÅÔÁ@åÁÙÃÈÁÙMñòø]@k@ %äÄãÃÖÄÅ@åÁÙÃÈÁÙMñòø]@]@@@ %ÓÁÕÇäÁÇÅ@âØÓ@ %â×ÅÃÉÆÉÃ@ÃÉâãÖÖÓâKÇÅãmÄÅâÃÙÉ×ãÖÙ@ %ÕÖã@ÄÅãÅÙÔÉÕÉâãÉÃ@ %ÙÅÁÄâ@âØÓ@ÄÁãÁ@ %ÃÁÓÓÅÄ@ÖÕ@ÕäÓÓ@ÉÕ×äã@ %ÕÖ@ÅçãÅÙÕÁÓ@ÁÃãÉÖÕ@ %ÃÖÕÃäÙÙÅÕã@ÁÃÃÅââ@ÙÅâÖÓäãÉÖÕ@ÄÅÆÁäÓã@ %âÅã@Ö×ãÉÖÕ@@ÁÓæÂÓÒ@~@\ÁÓÓÙÅÁÄ@k@ %ÁÓæÃ×èÄãÁ@~@\Ö×ãÉÔÉéÅ@k@ %ÃÖÔÔÉã@~@\ÕÖÕÅ@k@ %ÄÂÇåÉÅæ@~@\âÖäÙÃÅ@k@ %ÄÅÃÙÅâäÓã@~@Móñk@óñk@ðð]@k@ %ÄèÕÄÆãÃÖÓ@~@\ÕÖ@k@ %ÄèÕäâÙ×ÙÆ@~@\ÖæÕÅÙ@k@ %Ö×ãÓÖÂ@~@\èÅâ@k@ %âØÓÃäÙÙäÓÅ@~@\âãÄ@k@ %âÙãâÅØ@~@\ÈÅç@@@ %ÂÅÇÉÕ@ %ÄÅÃÓÁÙÅ@âãÔãÈÁÕÄÓÅ@ÂÉÇÉÕã@^@ %ÄÅÃÓÁÙÅ@ÄÅâÃÈÁÕÄÓÅ@åÁÙÃÈÁÙ@M@ñòø@]@^@ %ÄÅÃÓÁÙÅ@åÃÁÙÄÉÕÁÓÉãè@ÂÉÇÉÕã@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÄÁãÅãÉÔÅÃÖÄÅ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÂÁâÅÄÂÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÂÁâÅÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÂÁâÅÓÉÂÙÁÙèÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÂÁâÅãÁÂÓÅÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÃÃâÉÄ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÄÂÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÇÅÕÅÙÁãÅÄ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÇÅÕÅÙÁãÉÖÕãè×Å@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÈÉÄÄÅÕ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÙÖæÃÈÁÕÇÅ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÓÉÂÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕãÂÓÕÁÔÅ@åÁÙÃÈÁÙ@M@ñòø@]@ÄÅÆÁäÓã@}@}@^@ %ÄÅÃÓÁÙÅ@åÃÖÓäÔÕÁÓÓÖæä×ÄÁãÅ@ÉÕãÅÇÅÙ@ÄÅÆÁäÓã@ð@^@ %ÄÅÃÓÁÙÅ@åÃÖÙÙÅÓÁã \ No newline at end of file +SET PATH *LIBL ; + +CREATE OR REPLACE FUNCTION CISTOOLS.GET_DESCRIPTOR ( + SQLSTMT VARCHAR(32000) ) + RETURNS TABLE ( + COLUMNCARDINALITY BIGINT , + DATETIMECODE INTEGER , + BASEDBNAME VARCHAR(128) , + BASECOLUMNNAME VARCHAR(128) , + BASELIBRARYNAME VARCHAR(128) , + BASETABLENAME VARCHAR(128) , + COLUMNCCSID INTEGER , + COLUMNDBNAME VARCHAR(128) , + COLUMNGENERATED INTEGER , + COLUMNGENERATIONTYPE INTEGER , + COLUMNHIDDEN INTEGER , + COLUMNNAME VARCHAR(128) , + COLUMNROWCHANGE INTEGER , + COLUMNLIBNAME VARCHAR(128) , + COLUMNTBLNAME VARCHAR(128) , + COLUMNALLOWUPDATE INTEGER , + CORRELATIONNAME VARCHAR(128) , + CURSORNAME VARCHAR(128) , + COLUMNLABEL VARCHAR(60) , + PARAMNAME VARCHAR(128) , + RESULTSETROW BIGINT , + SYSTEMCOLUMNNAME CHAR(10) , + KEYMEMBER INTEGER , + COLUMNLENGTH INTEGER , + COLUMNLEVEL INTEGER , + OBJECTNAME VARCHAR(128) , + ISNULLABLE INTEGER , + OCTETLENGTH INTEGER , + PARAMMODE INTEGER , + PARAMORDPOS INTEGER , + ORDINALPOS INTEGER , + PARAMSPECIFICDB VARCHAR(128) , + PARAMSPECIFICTABLE VARCHAR(128) , + PARAMSPECIFICLIB VARCHAR(128) , + PRECISION INTEGER , + RETURNARRAYSIZE INTEGER , + RETURNLENGTH INTEGER , + RETURNOCTETLENGTH INTEGER , + SCALE INTEGER , + DATATYPE INTEGER , + SQLTYPE VARCHAR(128) , + ISUNNAMED INTEGER , + UDTCATALOG VARCHAR(128) , + UDTNAME VARCHAR(128) , + UDTSCHEMA VARCHAR(128) , + UDTCODE VARCHAR(128) ) + LANGUAGE SQL + SPECIFIC CISTOOLS.GET_DESCRIPTOR + NOT DETERMINISTIC + READS SQL DATA + CALLED ON NULL INPUT + NO EXTERNAL ACTION + CONCURRENT ACCESS RESOLUTION DEFAULT + SET OPTION ALWBLK = *ALLREAD , + ALWCPYDTA = *OPTIMIZE , + COMMIT = *NONE , + DBGVIEW = *SOURCE , + DECRESULT = (31, 31, 00) , + DYNDFTCOL = *NO , + DYNUSRPRF = *OWNER , + OPTLOB = *YES , + SQLCURRULE = *STD , + SRTSEQ = *HEX + BEGIN +DECLARE STMTHANDLE BIGINT ; +DECLARE DESCHANDLE VARCHAR ( 128 ) ; +DECLARE VCARDINALITY BIGINT DEFAULT 0 ; +DECLARE VDATETIMECODE INTEGER DEFAULT 0 ; +DECLARE VBASEDBNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VBASECOLUMNNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VBASELIBRARYNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VBASETABLENAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VCCSID INTEGER DEFAULT 0 ; +DECLARE VCOLUMNDBNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VCOLUMNGENERATED INTEGER DEFAULT 0 ; +DECLARE VCOLUMNGENERATIONTYPE INTEGER DEFAULT 0 ; +DECLARE VCOLUMNHIDDEN INTEGER DEFAULT 0 ; +DECLARE VCOLUMNNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VCOLUMNROWCHANGE INTEGER DEFAULT 0 ; +DECLARE VCOLUMNLIBNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VCOLUMNTBLNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VCOLUMNALLOWUPDATE INTEGER DEFAULT 0 ; +DECLARE VCORRELATIONNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VCURSORNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VLABEL VARCHAR ( 60 ) DEFAULT ' ' ; +DECLARE VPARAMNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VRESULTSETROW BIGINT DEFAULT 0 ; +DECLARE VSYSTEMCOLUMNNAME CHAR ( 10 ) DEFAULT ' ' ; +DECLARE VKEYMEMBER INTEGER DEFAULT 0 ; +DECLARE VLENGTH INTEGER DEFAULT 0 ; +DECLARE VLEVEL INTEGER DEFAULT 0 ; +DECLARE VOBJECTNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VISNULLABLE INTEGER DEFAULT 0 ; +DECLARE VOCTETLENGTH INTEGER DEFAULT 0 ; +DECLARE VPARAMMODE INTEGER DEFAULT 0 ; +DECLARE VPARAMORDPOS INTEGER DEFAULT 0 ; +DECLARE VORDINALPOS INTEGER DEFAULT 0 ; +DECLARE VPARAMSPECIFICDB VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VPARAMSPECIFICTABLE VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VPARAMSPECIFICLIB VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VPRECISION INTEGER DEFAULT 0 ; +DECLARE VRETURNARRAYSIZE INTEGER DEFAULT 0 ; +DECLARE VRETURNLENGTH INTEGER DEFAULT 0 ; +DECLARE VRETURNOCTETLENGTH INTEGER DEFAULT 0 ; +DECLARE VSCALE INTEGER DEFAULT 0 ; +DECLARE VDATATYPE INTEGER DEFAULT 0 ; +DECLARE VSQLTYPE VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VISUNNAMED INTEGER DEFAULT 0 ; +DECLARE VUDTCATALOG VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VUDTNAME VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VUDTSCHEMA VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE VUDTCODE VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE I INTEGER DEFAULT 1 ; +DECLARE TOKEN VARCHAR ( 128 ) DEFAULT ' ' ; +DECLARE RTNSQLCODE INT ; +DECLARE COLCOUNT INTEGER ; +DECLARE SQLCODE INTEGER DEFAULT 0 ; +DECLARE SQLSTATE CHAR ( 5 ) DEFAULT '00000' ; +DECLARE CONTINUE HANDLER FOR SQLSTATE '22501' , SQLSTATE '33000' +BEGIN +DEALLOCATE DESCRIPTOR LOCAL DESCHANDLE ; +GET DIAGNOSTICS CONDITION 1 TOKEN = DB2_ORDINAL_TOKEN_2 ; +SET COLCOUNT = TOKEN ; +ALLOCATE DESCRIPTOR LOCAL DESCHANDLE WITH MAX COLCOUNT ; +DESCRIBE STMTHANDLE USING DESCRIPTOR LOCAL DESCHANDLE ; +SET I = 1 ; +END ; +SET DESCHANDLE = 'Descr' || HEX ( GENERATE_UNIQUE ( ) ) ; +PREPARE STMTHANDLE FROM SQLSTMT ; +ALLOCATE DESCRIPTOR LOCAL DESCHANDLE WITH MAX 1024 ; +DESCRIBE STMTHANDLE USING DESCRIPTOR LOCAL DESCHANDLE ; +GET DESCRIPTOR LOCAL DESCHANDLE COLCOUNT = COUNT ; +WHILE I <= COLCOUNT DO +GET DESCRIPTOR LOCAL DESCHANDLE +VALUE I +VCARDINALITY = CARDINALITY , +VDATETIMECODE = DATETIME_INTERVAL_CODE , +VBASEDBNAME = DB2_BASE_CATALOG_NAME , +VBASECOLUMNNAME = DB2_BASE_COLUMN_NAME , +VBASELIBRARYNAME = DB2_BASE_SCHEMA_NAME , +VBASETABLENAME = DB2_BASE_TABLE_NAME , VCCSID = DB2_CCSID , +VCOLUMNDBNAME = DB2_COLUMN_CATALOG_NAME , +VCOLUMNGENERATED = DB2_COLUMN_GENERATED , +VCOLUMNGENERATIONTYPE = DB2_COLUMN_GENERATION_TYPE , +VCOLUMNHIDDEN = DB2_COLUMN_HIDDEN , +VCOLUMNNAME = DB2_COLUMN_NAME , +VCOLUMNROWCHANGE = DB2_COLUMN_ROW_CHANGE , +VCOLUMNLIBNAME = DB2_COLUMN_SCHEMA_NAME , +VCOLUMNTBLNAME = DB2_COLUMN_TABLE_NAME , +VCOLUMNALLOWUPDATE = DB2_COLUMN_UPDATABILITY , +VCORRELATIONNAME = DB2_CORRELATION_NAME , +VCURSORNAME = DB2_CURSOR_NAME , VLABEL = DB2_LABEL , +VPARAMNAME = DB2_PARAMETER_NAME , +VRESULTSETROW = DB2_RESULT_SET_ROWS , +VSYSTEMCOLUMNNAME = DB2_SYSTEM_COLUMN_NAME , +VKEYMEMBER = KEY_MEMBER , VLENGTH = LENGTH , VLEVEL = LEVEL , +VOBJECTNAME = NAME , VISNULLABLE = NULLABLE , +VOCTETLENGTH = OCTET_LENGTH , VPARAMMODE = PARAMETER_MODE , +VPARAMORDPOS = PARAMETER_ORDINAL_POSITION , +VPARAMSPECIFICDB = PARAMETER_SPECIFIC_CATALOG , +VPARAMSPECIFICTABLE = PARAMETER_SPECIFIC_NAME , +VPARAMSPECIFICLIB = PARAMETER_SPECIFIC_SCHEMA , +VPRECISION = PRECISION , +VRETURNARRAYSIZE = RETURNED_CARDINALITY , +VRETURNLENGTH = RETURNED_LENGTH , +VRETURNOCTETLENGTH = RETURNED_OCTET_LENGTH , VSCALE = SCALE , +VDATATYPE = TYPE , VISUNNAMED = UNNAMED , +VUDTCATALOG = USER_DEFINED_TYPE_CATALOG , +VUDTNAME = USER_DEFINED_TYPE_NAME , +VUDTSCHEMA = USER_DEFINED_TYPE_SCHEMA , +VUDTCODE = USER_DEFINED_TYPE_CODE ; +SET VLABEL = CISTOOLS . STRIP_SPACES ( VLABEL ) ; +SET VORDINALPOS = I ; +-- This code block maps data types to their equivalent SQL types +-- Standardize variable names +IF VDATATYPE = 5 THEN +SET VSQLTYPE = 'SQL_SMALLINT' ; +SET VLENGTH = 2 ; +SET VOCTETLENGTH = 2 ; +ELSEIF VDATATYPE = 4 THEN +SET VSQLTYPE = 'SQL_INTEGER' ; +SET VLENGTH = 4 ; +SET VOCTETLENGTH = 4 ; +ELSEIF VDATATYPE = 25 THEN +SET VSQLTYPE = 'SQL_BIGINT' ; +SET VLENGTH = 8 ; +SET VOCTETLENGTH = 8 ; +ELSEIF VDATATYPE = 3 THEN +SET VSQLTYPE = 'SQL_DECIMAL' ; +SET VLENGTH = ( VPRECISION / 2 ) + 1 ; +SET VOCTETLENGTH = ( VPRECISION / 2 ) + 1 ; +ELSEIF VDATATYPE = 2 THEN +SET VSQLTYPE = 'SQL_NUMERIC' ; +ELSEIF VDATATYPE = 7 THEN +SET VSQLTYPE = 'SQL_REAL' ; +SET VLENGTH = 4 ; +SET VOCTETLENGTH = 4 ; +ELSEIF VDATATYPE = 8 THEN +SET VSQLTYPE = 'SQL_DECFLOAT' ; +SET VLENGTH = 8 ; +SET VOCTETLENGTH = 8 ; +ELSEIF VDATATYPE = - 360 THEN +SET VSQLTYPE = 'SQL_DECFLOAT' ; +ELSEIF VDATATYPE = 1 THEN +SET VSQLTYPE = 'SQL_CHARACTER' ; +ELSEIF VDATATYPE = 12 THEN +SET VSQLTYPE = 'SQL_VARCHAR' ; +ELSEIF VDATATYPE = 40 THEN +SET VSQLTYPE = 'SQL_CLOB' ; +ELSEIF VDATATYPE = - 95 THEN +SET VSQLTYPE = 'SQL_GRAPHIC' ; +SET VOCTETLENGTH = VLENGTH * 2 ; +ELSEIF VDATATYPE = - 96 THEN +SET VSQLTYPE = 'SQL_VARGRAPHIC' ; +SET VOCTETLENGTH = VLENGTH * 2 ; +ELSEIF VDATATYPE = - 350 THEN +SET VSQLTYPE = 'SQL_DBCLOB' ; +SET VOCTETLENGTH = VLENGTH * 2 ; +ELSEIF VDATATYPE = - 2 THEN +SET VSQLTYPE = 'SQL_BINARY' ; +ELSEIF VDATATYPE = - 3 THEN +SET VSQLTYPE = 'SQL_VARBINARY' ; +ELSEIF VDATATYPE = 30 THEN +SET VSQLTYPE = 'SQL_BLOB' ; +ELSEIF VDATATYPE = 9 THEN +IF VDATETIMECODE = 1 THEN +SET VSQLTYPE = 'SQL_DATE' ; +SET VLENGTH = 10 ; +SET VOCTETLENGTH = 10 ; +ELSEIF VDATETIMECODE = 2 THEN +SET VSQLTYPE = 'SQL_TIME' ; +SET VLENGTH = 8 ; +SET VOCTETLENGTH = 8 ; +ELSEIF VDATETIMECODE = 3 THEN +SET VSQLTYPE = 'SQL_TIMESTAMP' ; +SET VLENGTH = 26 ; +SET VOCTETLENGTH = 26 ; +END IF ; +ELSEIF VDATATYPE = 70 THEN +SET VSQLTYPE = 'SQL_DATALINK' ; +ELSEIF VDATATYPE = - 904 THEN +SET VSQLTYPE = 'SQL_ROWID' ; +ELSEIF VDATATYPE = 137 THEN +SET VSQLTYPE = 'SQL_XML' ; +ELSEIF VDATATYPE = - 400 THEN +SET VSQLTYPE = 'SQL_GRAPHIC' ; +SET VOCTETLENGTH = VLENGTH * 2 ; +ELSEIF VDATATYPE = - 916 THEN +SET VSQL_TYPE = 'SQL_BLOB' ; +SET VLENGTH = 267 ; +SET VOCTETLENGTH = 267 ; +ELSEIF VDATATYPE = - 920 THEN +SET VSQL_TYPE = 'SQL_CLOB' ; +SET VLENGTH = 267 ; +SET VOCTETLENGTH = 267 ; +ELSEIF VDATATYPE = - 924 THEN +SET VSQL_TYPE = 'SQL_DBCLOB' ; +SET VLENGTH = 267 ; +SET VOCTETLENGTH = 267 ; +ELSEIF VDATATYPE = - 972 THEN +SET VSQL_TYPE = 'SQL_RESULT_SET_LOCATOR' ; +SET VLENGTH = 8 ; +SET VOCTETLENGTH = 8 ; +ELSE +SET VSQLTYPE = 'UNKNOWN TYPE' ; +END IF ; +PIPE ( +VCARDINALITY , +VDATETIMECODE , VBASEDBNAME , VBASECOLUMNNAME , VBASELIBRARYNAME , +VBASETABLENAME , VCCSID , VCOLUMNDBNAME , VCOLUMNGENERATED , +VCOLUMNGENERATIONTYPE , VCOLUMNHIDDEN , VCOLUMNNAME , +VCOLUMNROWCHANGE , VCOLUMNLIBNAME , VCOLUMNTBLNAME , +VCOLUMNALLOWUPDATE , VCORRELATIONNAME , VCURSORNAME , VLABEL , +VPARAMNAME , VRESULTSETROW , VSYSTEMCOLUMNNAME , VKEYMEMBER , +VLENGTH , VLEVEL , VOBJECTNAME , VISNULLABLE , VOCTETLENGTH , +VPARAMMODE , VPARAMORDPOS , VORDINALPOS , VPARAMSPECIFICDB , +VPARAMSPECIFICTABLE , VPARAMSPECIFICLIB , VPRECISION , +VRETURNARRAYSIZE , VRETURNLENGTH , VRETURNOCTETLENGTH , VSCALE , +VDATATYPE , VSQLTYPE , VISUNNAMED , VUDTCATALOG , VUDTNAME , +VUDTSCHEMA , VUDTCODE ) ; +SET I = I + 1 ; +END WHILE ; +DEALLOCATE DESCRIPTOR LOCAL DESCHANDLE ; +RETURN ; +END ; + +COMMENT ON PARAMETER SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR +( SQLSTMT IS 'SQL Statement' ) ; + +LABEL ON SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR + IS 'Get Descriptor' ; + +GRANT ALTER , EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR +TO AMAPICS WITH GRANT OPTION ; + +GRANT EXECUTE +ON SPECIFIC FUNCTION CISTOOLS.GET_DESCRIPTOR +TO PUBLIC ; +