niota

fascinating. logical.

User Tools

Site Tools


niota-docs:niota_api_mdconfig_catalogobjectblob

This is an old revision of the document!


/*!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.1648905444.txt.gz · Last modified: 2025/07/17 14:11 (external edit)