Primer Commit
This commit is contained in:
101
DB/PROCEDURES/P_MANAGE_REQ_OBJ.sql
Normal file
101
DB/PROCEDURES/P_MANAGE_REQ_OBJ.sql
Normal file
@@ -0,0 +1,101 @@
|
||||
--------------------------------------------------------
|
||||
-- DDL for Procedure P_MANAGE_REQ_OBJ
|
||||
--------------------------------------------------------
|
||||
set define off;
|
||||
|
||||
CREATE OR REPLACE EDITIONABLE PROCEDURE "ENVX_OPER"."P_MANAGE_REQ_OBJ" (
|
||||
-- '[{"request_id": 159,"branch_name": "AMDES","type_group": "commit","group_id": "a2s34d5f67c6x5a4sdf567f8dsa76c5vbn67r65s","file_name": "config/api-casa-v1/file1.txt"},{"request_id": 159,"branch_name": "AMDES","type_group": "commit","group_id": "a2s34d5f67c6x5a4sdf567f8dsa76c5vbn67r65s","file_name": "config/api-casa-v1/archivossssssssssssssssss.txt"}]'
|
||||
p_json_parameters IN OUT CLOB,
|
||||
p_object_order IN OUT NUMBER,
|
||||
pi_json_objects IN CLOB,
|
||||
pi_name_object IN VARCHAR2 DEFAULT NULL,
|
||||
pi_select_action IN VARCHAR2,
|
||||
po_message OUT CLOB
|
||||
) AS
|
||||
|
||||
v_request_id VARCHAR2(100);
|
||||
v_branches VARCHAR2(100);
|
||||
v_type VARCHAR2(100);
|
||||
v_group_id VARCHAR2(100);
|
||||
v_object_name VARCHAR2(100);
|
||||
v_object_order VARCHAR2(100);
|
||||
v_coincidence NUMBER := 0;
|
||||
v_json_array json_array_t := json_array_t();
|
||||
json_aux JSON;
|
||||
json_aux_del CLOB;
|
||||
obj json_object_t := json_object_t();
|
||||
BEGIN
|
||||
v_object_order := p_object_order + 1;
|
||||
v_request_id := JSON_VALUE(pi_json_objects, '$.request_id');
|
||||
v_branches := JSON_VALUE(pi_json_objects, '$.branch_name');
|
||||
v_type := JSON_VALUE(pi_json_objects, '$.type_group');
|
||||
v_group_id := JSON_VALUE(pi_json_objects, '$.group_id');
|
||||
v_object_name := JSON_VALUE(pi_json_objects, '$.file_name');
|
||||
|
||||
CASE
|
||||
WHEN pi_select_action = 'add' THEN
|
||||
|
||||
|
||||
json_aux := json(pi_json_objects);
|
||||
v_coincidence := 0;--instr(p_json_parameters, v_object_name);
|
||||
|
||||
select count(*)
|
||||
into v_coincidence
|
||||
from json_table(json(nvl(p_json_parameters,'[]')), '$[*]' columns (obj VARCHAR2(1000) PATH '$.file_name')) j
|
||||
where j.obj = JSON_VALUE(json_aux,'$.file_name');
|
||||
|
||||
IF v_coincidence = 0 OR v_coincidence IS NULL THEN
|
||||
|
||||
v_json_array := json_array_t.parse(nvl(p_json_parameters,'[]'));
|
||||
v_json_array.append(json_aux);
|
||||
p_json_parameters := v_json_array.to_clob;
|
||||
|
||||
|
||||
po_message := 'El objeto "'
|
||||
|| v_object_name
|
||||
|| '" se ha agregado con exito';
|
||||
p_object_order := v_object_order;
|
||||
|
||||
ELSE
|
||||
po_message := 'El objeto "'
|
||||
|| v_object_name
|
||||
|| '" ya existe';
|
||||
END IF;
|
||||
|
||||
----------------------------------------------------------------------------------------------------------------------------------
|
||||
WHEN pi_select_action = 'delete' THEN
|
||||
|
||||
json_aux_del := p_json_parameters;
|
||||
p_json_parameters := NULL;
|
||||
FOR obj IN (
|
||||
SELECT c_object,
|
||||
file_name
|
||||
FROM JSON_TABLE (
|
||||
JSON(json_aux_del), '$[*]'
|
||||
COLUMNS
|
||||
c_object JSON PATH '$',
|
||||
file_name VARCHAR2 (1000) PATH '$.file_name'
|
||||
)
|
||||
)
|
||||
LOOP
|
||||
IF obj.file_name != pi_name_object THEN
|
||||
v_json_array.append(obj.c_object);
|
||||
p_json_parameters := v_json_array.to_string;
|
||||
ELSE
|
||||
po_message := 'El objeto "'
|
||||
|| pi_name_object
|
||||
|| '" ha sido eliminado';
|
||||
p_object_order := p_object_order - 1;
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
ELSE
|
||||
NULL;
|
||||
END CASE;
|
||||
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN
|
||||
po_message := 'Error: ' || sqlerrm;
|
||||
END;
|
||||
|
||||
/
|
||||
Reference in New Issue
Block a user