midrange.com code scratchpad
Name:
generate_spreadsheet SQL
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
01/08/2024 04:32:20 pm
IP:
Logged
Description:
DDL generated from V7.5
Code:
  1. --  Generate SQL 
  2. --  Version:                       V7R5M0 220415 
  3. --  Generated on:                  01/08/24 11:25:49 
  4. --  Relational Database:           MYSYS
  5. --  Standards Option:              Db2 for i 
  6. SET PATH "QSYS","QSYS2","SYSPROC","SYSIBMADM" ; 
  7.   
  8. CREATE FUNCTION SYSTOOLS.GENERATE_SPREADSHEET ( 
  9.     PATH_NAME DBCLOB(900) CCSID 1200 , 
  10.     SPREADSHEET_QUERY VARCHAR(4000) FOR SBCS DATA DEFAULT  NULL  , 
  11.     LIBRARY_NAME VARCHAR(10) FOR SBCS DATA DEFAULT  NULL  , 
  12.     FILE_NAME VARCHAR(10) FOR SBCS DATA DEFAULT  NULL  , 
  13.     SPREADSHEET_TYPE VARCHAR(4) FOR SBCS DATA DEFAULT  'csv'  , 
  14.     COLUMN_HEADINGS VARCHAR(6) FOR SBCS DATA DEFAULT  'NONE'  ) 
  15.     RETURNS INTEGER   
  16.     LANGUAGE SQL 
  17.     SPECIFIC SYSTOOLS.GENSPREAD 
  18.     NOT DETERMINISTIC 
  19.     MODIFIES SQL DATA 
  20.     CALLED ON NULL INPUT 
  21.     NOT FENCED 
  22.     SYSTEM_TIME SENSITIVE NO 
  23.     SET OPTION  ALWBLK = *ALLREAD , 
  24.     ALWCPYDTA = *OPTIMIZE , 
  25.     COMMIT = *NONE , 
  26.     DECRESULT = (31, 31, 00) , 
  27.     DFTRDBCOL = QSYS2 , 
  28.     DLYPRP = *NO , 
  29.     DYNDFTCOL = *NO , 
  30.     DYNUSRPRF = *USER , 
  31.     SRTSEQ = *HEX , 
  32.     USRPRF = *USER   
  33.     BEGIN 
  34. DECLARE CMD_TEXT VARCHAR ( 10000 ) FOR SBCS DATA ; 
  35. DECLARE V_HOST_NAME VARCHAR ( 255 ) FOR SBCS DATA ; 
  36. DECLARE CLDOWNLOAD_RESULT INTEGER ; 
  37. DECLARE LOCAL_SQLCODE INTEGER ; 
  38. DECLARE LOCAL_SQLSTATE CHAR ( 5 ) FOR SBCS DATA ; 
  39. DECLARE V_MESSAGE_TEXT VARCHAR ( 2000 ) FOR SBCS DATA ; 
  40. DECLARE V_FAILURE_TEXT VARCHAR ( 2000 ) FOR SBCS DATA ; 
  41. DECLARE EXIT HANDLER FOR SQLEXCEPTION 
  42. BEGIN 
  43. GET DIAGNOSTICS CONDITION 1 
  44. LOCAL_SQLCODE = DB2_RETURNED_SQLCODE , LOCAL_SQLSTATE = RETURNED_SQLSTATE , 
  45. V_MESSAGE_TEXT = MESSAGE_TEXT ; 
  46. SET V_FAILURE_TEXT = 'GENERATE_SPREADSHEET: FAILED WITH SQLCODE=' CONCAT LOCAL_SQLCODE CONCAT 
  47. ' SQLSTATE=' CONCAT LOCAL_SQLSTATE CONCAT ' MESSAGE=' CONCAT 
  48. V_MESSAGE_TEXT ; 
  49. SIGNAL SQLSTATE LOCAL_SQLSTATE 
  50. SET MESSAGE_TEXT = V_FAILURE_TEXT ; 
  51. RETURN - 1 ; 
  52. END ; 
  53.   
  54. SELECT HOST_NAME INTO V_HOST_NAME 
  55. FROM QSYS2 . SYSTEM_STATUS_INFO_BASIC ; 
  56. IF ( COLUMN_HEADINGS <> 'COLUMN' ) AND ( COLUMN_HEADINGS <> 'LABEL' ) AND 
  57. ( COLUMN_HEADINGS <> 'NONE' ) THEN 
  58. SET V_FAILURE_TEXT = 'GENERATE_SPREADSHEET: COLUMN_HEADINGS: ' CONCAT COLUMN_HEADINGS CONCAT 
  59. ' IS INVALID' ; 
  60. SIGNAL SQLSTATE 'VSP01' SET MESSAGE_TEXT = V_FAILURE_TEXT ; 
  61. END IF ; 
  62. IF ( SPREADSHEET_QUERY IS NULL ) AND ( FILE_NAME IS NULL OR LIBRARY_NAME IS NULL ) THEN 
  63. SET V_FAILURE_TEXT = 'GENERATE_SPREADSHEET: EITHER SPREADSHEET_QUERY OR LIBRARY_NAME AND FILE_NAME MUST BE SPECIFIED' ; 
  64. SIGNAL SQLSTATE 'VSP02' SET MESSAGE_TEXT = V_FAILURE_TEXT ; 
  65. END IF ; 
  66. IF ( SPREADSHEET_TYPE <> 'csv' ) AND ( SPREADSHEET_TYPE <> 'ods' ) AND ( SPREADSHEET_TYPE <> 'xlsx' ) THEN 
  67. SET V_FAILURE_TEXT = 'GENERATE_SPREADSHEET: SPREADSHEET_TYPE:' CONCAT SPREADSHEET_TYPE CONCAT 
  68. ' IS INVALID' ; 
  69. SIGNAL SQLSTATE 'VSP03' SET MESSAGE_TEXT = V_FAILURE_TEXT ; 
  70. END IF ; 
  71. SET CMD_TEXT = 
  72. 'QSYS/STRQSH CMD(''java -Dcom.ibm.iaccess.ActLikeExternal=true -jar /QIBM/proddata/Access/ACS/Base/acsbundle.jar ' 
  73. CONCAT '/plugin=cldownload /system=' CONCAT V_HOST_NAME 
  74. CONCAT ' /clientfile=' CONCAT PATH_NAME CONCAT '.' CONCAT SPREADSHEET_TYPE ; 
  75. IF ( SPREADSHEET_QUERY IS NOT NULL ) THEN 
  76. SET CMD_TEXT = CMD_TEXT CONCAT ' /sql="' CONCAT REPLACE ( SPREADSHEET_QUERY , '''' , '''''' ) CONCAT '"' ; 
  77. ELSE 
  78. IF ( QSYS2 . SQL_CHECK_AUTHORITY ( LIBRARY_NAME , FILE_NAME ) = 0 ) THEN 
  79. SET V_FAILURE_TEXT = 'GENERATE_SPREADSHEET: INSUFFICIENT AUTHORITY OR FILE DOES NOT EXIST: ' CONCAT 
  80. LIBRARY_NAME CONCAT '/' CONCAT FILE_NAME ; 
  81. SIGNAL SQLSTATE 'VSP04' SET MESSAGE_TEXT = V_FAILURE_TEXT ; 
  82. END IF ; 
  83. SET CMD_TEXT = CMD_TEXT CONCAT ' /hostfile=' CONCAT LIBRARY_NAME CONCAT '/' CONCAT FILE_NAME ; 
  84. END IF ; 
  85. IF ( COLUMN_HEADINGS = 'COLUMN' ) THEN 
  86. SET CMD_TEXT = CMD_TEXT CONCAT ' /colheadings=1' ; 
  87. ELSE IF ( COLUMN_HEADINGS = 'LABEL' ) THEN 
  88. SET CMD_TEXT = CMD_TEXT CONCAT ' /colheadings=1 /usecollabels' ; 
  89. END IF ; 
  90. END IF ; 
  91. SET CMD_TEXT = CMD_TEXT CONCAT ''')' ; 
  92. CALL SYSTOOLS . LPRINTF ( 'SPEADSHEET COMMAND: ' CONCAT CMD_TEXT ) ; 
  93. CALL QSYS2 . QCMDEXC ( CMD_TEXT ) ; 
  94. WITH LAST_QSH_MSG ( MSGTEXT ) AS ( 
  95. SELECT MESSAGE_TEXT FROM TABLE ( QSYS2 . JOBLOG_INFO ( '*' ) ) 
  96. WHERE MESSAGE_ID = 'QSH0005' 
  97. ORDER BY ORDINAL_POSITION DESC 
  98. LIMIT 1 
  99. SELECT COUNT ( * ) INTO CLDOWNLOAD_RESULT 
  100. FROM LAST_QSH_MSG 
  101. WHERE MSGTEXT LIKE '%exit status 0.%' ; 
  102. IF ( CLDOWNLOAD_RESULT = 1 ) THEN 
  103. RETURN 1 ; 
  104. ELSE 
  105. SET V_FAILURE_TEXT = 'GENERATE_SPREADSHEET: ACS - cldownload FAILED - CONSULT JOBLOG FOR DETAILS' ; 
  106. SIGNAL SQLSTATE 'VSP05' SET MESSAGE_TEXT = V_FAILURE_TEXT ; 
  107. END IF ; 
  108. END  ; 
  109.   
  110. COMMENT ON SPECIFIC FUNCTION SYSTOOLS.GENSPREAD 
  111.     IS 'DB2 FOR IBM i SUPPLIED OBJECT VERSION 07500010000' ; 
  112.   
  113. COMMENT ON PARAMETER SPECIFIC FUNCTION SYSTOOLS.GENSPREAD 
  114. ( PATH_NAME IS 'pathname - Default: none' , 
  115.     SPREADSHEET_QUERY IS 'string - Default: NULL' , 
  116.     LIBRARY_NAME IS 'name - Default: NULL' , 
  117.     FILE_NAME IS 'name - Default: NULL' , 
  118.     SPREADSHEET_TYPE IS 'csv, ods, xlsx - Default: csv' , 
  119.     COLUMN_HEADINGS IS 'COLUMN, LABEL, NONE - Default: NONE' ) ; 
  120.   
  121. GRANT EXECUTE   
  122. ON SPECIFIC FUNCTION SYSTOOLS.GENSPREAD 
  123. TO PUBLIC ; 
  124.   
  125. GRANT ALTER , EXECUTE   
  126. ON SPECIFIC FUNCTION SYSTOOLS.GENSPREAD 
  127. TO QSYS WITH GRANT OPTION ; 
  128.   
  129.  
© 2004-2019 by midrange.com generated in 0.006s valid xhtml & css