niota

fascinating. logical.

User Tools

Site Tools


niota-docs:niota_api_mdconfig_catalogobjectblob

This is an old revision of the document!


mdConfig_CatalogObjectBLOB
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 
DELIMITER //
CREATE DEFINER=`niota`@`localhost` PROCEDURE `mdConfig_CatalogObjectBLOB`(
  IN CMDSYP_I        nvarchar(16)  -- CoMmanD SYstem Procedure           
 ,IN OPTSYP_I        nvarchar(128) -- OPTion SYstem Procedure
 ,IN APPCODE_I       nvarchar(5)   -- APPlication CoDe
 ,IN CATALOG_ID_I    INTEGER       -- Catalog ID    
 ,IN BLOB_ID_I       nvarchar(32)  -- Binary Large OBject ID         
 ,IN FILENAME_I      nvarchar(256)     
)
this_sp: BEGIN
-- drop procedure if exists `mdConfig_CatalogObjectBLOB`
-- *******************************************************************************
-- author.........: Reinhard Reisinger
-- copyright......: ritconsult IT und Projektconsulting Ges.m.b.H.
-- date written...: 2020.12.12
-- 
-- manage etx_catalog_object_blob meta data entries
-- ===========+========+===== changelog ==========================================
-- YYYY.MM.DD | author | change
-- -----------+--------+----------------------------------------------------------
-- 2020.12.12   fmrre    created
--
-- *******************************************************************************
--	
 
DECLARE loop_max BIGINT DEFAULT 1000;
DECLARE loop_max_c nvarchar(10);
 
DECLARE ROW_NUMBER BIGINT DEFAULT 0;
DECLARE row_number_c nvarchar(10);
DECLARE sep_mp VARCHAR(01) DEFAULT mdinfo_SysConstant('SEP_MSGPAR');
DECLARE sep_sp VARCHAR(01) DEFAULT mdinfo_SysConstant('SEP_SYPPAR');
 
DECLARE l_this_sp nvarchar(128) DEFAULT 'mdConfig_CatalogObjectBLOB';
DECLARE l_msg_id_final INTEGER DEFAULT mdinfo_SysConstant('MSG_ID_SP_ERR');
DECLARE l_msg_par_final nvarchar(4000) DEFAULT ' ';
DECLARE l_message_text VARCHAR(128) DEFAULT ' ';
DECLARE l_syscfg_secure_file_priv nvarchar(32) DEFAULT 'secure_file_priv';
 
DECLARE l_cmdsyp nvarchar(16);
DECLARE l_ind_cmdsyp bit DEFAULT 0;
 
DECLARE l_cmdsyp_add nvarchar(16) DEFAULT 'ADD';
DECLARE l_ind_cmdsyp_add bit DEFAULT 0;
 
-- all possible system options
DECLARE l_optsyp_withuca nvarchar(16) DEFAULT 'WITHUCA';
DECLARE l_ind_optsyp_withuca bit DEFAULT 0;
 
DECLARE l_optsyp nvarchar(128);
DECLARE l_ind_optsyp bit DEFAULT 0;
 
DECLARE l_alloptsyp nvarchar(512);
DECLARE l_allcmdsyp nvarchar(512);
 
-- internal strings (e.g. logging command and its options)
DECLARE l_cmd_log VARCHAR(16) DEFAULT "LOG";
DECLARE l_opt_cmdlog VARCHAR(128) DEFAULT "";
 
DECLARE l_username nvarchar(16) DEFAULT CURRENT_USER();
 
DECLARE l_appcode nvarchar(5);
DECLARE l_catalog_id INTEGER;
DECLARE l_catalog_id_c nvarchar(10);
DECLARE l_blob_id nvarchar(32);
DECLARE l_filename nvarchar(256);
DECLARE l_foldername nvarchar(256);
 
DECLARE l_loadfile nvarchar(512);
DECLARE l_len_blob INTEGER;
DECLARE l_len_blob_c nvarchar(10);
 
 
SET l_cmdsyp = CMDSYP_I;
SET l_optsyp = OPTSYP_I;
SET l_appcode = APPCODE_I;
SET l_catalog_id = CATALOG_ID_I;
SET l_blob_id = BLOB_ID_I;
SET l_filename = FILENAME_I;
 
 
SET l_foldername = mdinfo_SysConfigValue(mdinfo_SysConstant('APPCODE'), l_syscfg_secure_file_priv);
SET l_loadfile = CONCAT( COALESCE(l_foldername,'uploadfolder') , '/' , COALESCE(l_filename, 'uploadfile'));
 
-- set indicators for syscommand to true if the string is found in den CMDSYP-Parameter;
IF locate(l_cmdsyp_add, l_cmdsyp, 1) > 0 THEN SET l_ind_cmdsyp_add = 1; END IF;
 
-- check if at least one command is valid
SET l_ind_cmdsyp = l_ind_cmdsyp_add; -- | next;
SET l_allcmdsyp = concat(l_cmdsyp_add); -- next
 
-- set indicators for sysoptions to true if the string is found in den OPTSYP-Parameter;
 
IF locate(l_optsyp_withuca, l_optsyp, 1) > 0 THEN SET l_ind_optsyp_withuca = 1; END IF;
 
-- check if at least one option is valid
SET l_ind_optsyp = l_ind_optsyp_withuca; -- | next;
SET l_alloptsyp = concat(l_optsyp_withuca); -- , sep_sp, next
IF l_optsyp = '' OR l_optsyp IS NULL THEN SET l_ind_optsyp = 1; END IF;
 
main: BEGIN
IF l_ind_cmdsyp = 0 THEN SET l_msg_par_final = concat(l_cmdsyp, sep_mp, l_allcmdsyp); leave main; END IF;
IF l_ind_optsyp = 0 THEN SET l_msg_par_final = concat(l_optsyp, sep_mp, l_alloptsyp); leave main; END IF;
 
-- forward the withuca - option to internal logging
IF l_ind_optsyp_withuca THEN SET l_opt_cmdlog = l_optsyp_withuca; END IF;
 
add_blob: BEGIN
IF NOT l_ind_cmdsyp_add THEN leave add_blob; END IF;
 
-- get the username from the option-string or current user
SET l_username = COALESCE(mdInfo_OptionConfigValue(l_optsyp, l_optsyp_withuca),  SUBSTRING(CURRENT_USER(),1,16));
 
 
INSERT INTO etx_catalog_object_blob 
 (appcode_blob, 
  catalog_id, 
  blob_id, 
  foldername_blob, 
  filename_blob, 
  blob_data, 
  ts_load, 
  username_load
 )
VALUES (
    l_appcode, 
    l_catalog_id, 
	 l_blob_id, 
	 l_foldername, 
	 l_filename, 
	LOAD_FILE(l_loadfile),
	CURRENT_TIMESTAMP, 
	 l_username)
ON DUPLICATE KEY
UPDATE
   foldername_blob = VALUES(foldername_blob), 
   filename_blob = VALUES(filename_blob), 
   blob_data = VALUES(blob_data),
   ts_load = VALUES(ts_load),
   username_load = VALUES(username_load)
;
 
SET ROW_NUMBER = ROW_COUNT();
 
SET row_number_c = CONVERT(ROW_NUMBER, CHAR);
SET l_catalog_id_c = CONVERT(l_catalog_id, CHAR);
 
 
SET l_len_blob = 0;
SELECT 
  LENGTH(blob_data) 
INTO
  l_len_blob  
FROM  etx_catalog_object_blob 
WHERE appcode_blob = l_appcode 
 AND catalog_id = l_catalog_id 
 AND blob_id = l_blob_id;
 
 
SET l_len_blob_c = CONVERT(COALESCE(l_len_blob,0), CHAR);
 
IF ROW_NUMBER = 0 OR (l_len_blob IS NOT NULL AND l_len_blob = 0) OR l_len_blob IS NULL THEN
   SET l_msg_id_final = 1072;
   SET l_msg_par_final = concat(l_appcode, sep_mp, l_catalog_id_c, sep_mp, l_blob_id, sep_mp, l_loadfile);
ELSE
   SET l_msg_id_final = 1071;
   SET l_msg_par_final = concat(l_appcode, sep_mp, l_catalog_id_c, sep_mp, l_blob_id, sep_mp, l_len_blob_c);
END IF;
 
END add_blob;
END main;
 
IF l_msg_id_final <> 0 THEN
   CALL mdLog_UserMessage(l_cmd_log, l_opt_cmdlog, l_username, l_this_sp, l_msg_id_final, l_msg_par_final, l_message_text);
END IF;
 
 
IF l_ind_cmdsyp = 0 OR l_ind_optsyp = 0 THEN 
   SIGNAL SQLSTATE '45000'
   SET MESSAGE_TEXT = l_message_text;
END IF;
 
END//
DELIMITER ;
 
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
niota-docs/niota_api_mdconfig_catalogobjectblob.1648905515.txt.gz · Last modified: 2025/07/17 14:11 (external edit)