@@ -12,6 +12,11 @@ PROMPT DZ_JSON_UTIL.pks;
1212CREATE OR REPLACE PACKAGE dz_json_util
1313AUTHID CURRENT_USER
1414AS
15+
16+ -----------------------------------------------------------------------------
17+ -----------------------------------------------------------------------------
18+ FUNCTION get_guid
19+ RETURN VARCHAR2;
1520
1621 -----------------------------------------------------------------------------
1722 -----------------------------------------------------------------------------
@@ -187,6 +192,26 @@ PROMPT DZ_JSON_UTIL.pkb;
187192CREATE OR REPLACE PACKAGE BODY dz_json_util
188193AS
189194
195+ -----------------------------------------------------------------------------
196+ -----------------------------------------------------------------------------
197+ FUNCTION get_guid
198+ RETURN VARCHAR2
199+ AS
200+ str_sysguid VARCHAR2(40 Char);
201+
202+ BEGIN
203+
204+ str_sysguid := UPPER(RAWTOHEX(SYS_GUID()));
205+
206+ RETURN '{'
207+ || SUBSTR(str_sysguid,1,8) || '-'
208+ || SUBSTR(str_sysguid,9,4) || '-'
209+ || SUBSTR(str_sysguid,13,4) || '-'
210+ || SUBSTR(str_sysguid,17,4) || '-'
211+ || SUBSTR(str_sysguid,21,12)|| '}';
212+
213+ END get_guid;
214+
190215 -----------------------------------------------------------------------------
191216 -----------------------------------------------------------------------------
192217 FUNCTION gz_split(
16421667 /*
16431668 header: DZ_JSON
16441669
1645- - Build ID: 33
1646- - Change Set: 213cb0707d9933af249bd4227e3bc37e248a89ca
1670+ - Build ID: 37
1671+ - Change Set: 34d20bf89b8269ad25851e24544c58537d74501c
16471672
16481673 Utility for the creation of JSON and GeoJSON from Oracle data types and
16491674 structures. Support for the deserialization of JSON is not implemented.
43164341 str_output := REGEXP_REPLACE(str_output,UNISTR('\201D'),'\u201D');
43174342 str_output := REGEXP_REPLACE(str_output,UNISTR('\201F'),'\u201F');
43184343 str_output := REGEXP_REPLACE(str_output,UNISTR('\2022'),'\u2022');
4344+ str_output := REGEXP_REPLACE(str_output,UNISTR('\20AC'),'\u20AC');
43194345 str_output := REGEXP_REPLACE(str_output,UNISTR('\2122'),'\u2122');
43204346
43214347 IF p_quote_strings = 'FALSE'
44564482 clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201D'),'\u201D');
44574483 clb_output := REGEXP_REPLACE(clb_output,UNISTR('\201F'),'\u201F');
44584484 clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2022'),'\u2022');
4485+ clb_output := REGEXP_REPLACE(clb_output,UNISTR('\20AC'),'\u20AC');
44594486 clb_output := REGEXP_REPLACE(clb_output,UNISTR('\2122'),'\u2122');
44604487
44614488 IF p_quote_strings = 'FALSE'
@@ -5516,6 +5543,7 @@ AS OBJECT (
55165543 ,CONSTRUCTOR FUNCTION dz_json_element2(
55175544 p_name IN VARCHAR2
55185545 ,p_element_string_vry IN MDSYS.SDO_STRING2_ARRAY
5546+ ,p_unique_flag IN VARCHAR2 DEFAULT 'FALSE'
55195547 ) RETURN SELF AS RESULT
55205548
55215549 -----------------------------------------------------------------------------
@@ -5668,15 +5696,79 @@ AS
56685696 CONSTRUCTOR FUNCTION dz_json_element2(
56695697 p_name IN VARCHAR2
56705698 ,p_element_string_vry IN MDSYS.SDO_STRING2_ARRAY
5699+ ,p_unique_flag IN VARCHAR2 DEFAULT 'FALSE'
56715700 ) RETURN SELF AS RESULT
56725701 AS
5702+ FUNCTION remove_dups(
5703+ p_input IN MDSYS.SDO_STRING2_ARRAY
5704+ ) RETURN MDSYS.SDO_STRING2_ARRAY
5705+ AS
5706+ ary_output MDSYS.SDO_STRING2_ARRAY;
5707+ boo_hit BOOLEAN;
5708+ int_counter PLS_INTEGER;
5709+
5710+ BEGIN
5711+
5712+ IF p_input IS NULL
5713+ THEN
5714+ RETURN NULL;
5715+
5716+ END IF;
5717+
5718+ IF p_input.COUNT IN (0,1)
5719+ THEN
5720+ RETURN p_input;
5721+
5722+ END IF;
5723+
5724+ ary_output := MDSYS.SDO_STRING2_ARRAY();
5725+ ary_output.EXTEND();
5726+ ary_output(1) := p_input(1);
5727+
5728+ int_counter := 2;
5729+ FOR i IN 2 .. p_input.COUNT
5730+ LOOP
5731+ boo_hit := FALSE;
5732+ <<inner_loop>>
5733+ FOR j IN 1 .. ary_output.COUNT
5734+ LOOP
5735+ IF p_input(i) = ary_output(j)
5736+ THEN
5737+ boo_hit := TRUE;
5738+ EXIT inner_loop;
5739+
5740+ END IF;
5741+
5742+ END LOOP;
5743+
5744+ IF NOT boo_hit
5745+ THEN
5746+ ary_output.EXTEND();
5747+ ary_output(int_counter) := p_input(i);
5748+ int_counter := int_counter + 1;
5749+
5750+ END IF;
5751+
5752+ END LOOP;
5753+
5754+ RETURN ary_output;
5755+
5756+ END remove_dups;
5757+
56735758 BEGIN
56745759 IF p_element_string_vry IS NULL
56755760 THEN
56765761 self.element_null := 1;
56775762
56785763 ELSE
5679- self.element_string_vry := p_element_string_vry;
5764+ IF UPPER(p_unique_flag) = 'TRUE'
5765+ THEN
5766+ self.element_string_vry := remove_dups(p_element_string_vry);
5767+
5768+ ELSE
5769+ self.element_string_vry := p_element_string_vry;
5770+
5771+ END IF;
56805772
56815773 END IF;
56825774
@@ -7114,7 +7206,8 @@ AUTHID CURRENT_USER
71147206AS OBJECT (
71157207 geometry MDSYS.SDO_GEOMETRY
71167208 ,properties_name VARCHAR2(4000 Char)
7117- ,properties_string VARCHAR2(4000 Char)
7209+ ,properties_string VARCHAR2(32000 Char)
7210+ ,properties_clob CLOB
71187211 ,properties_number NUMBER
71197212 ,properties_date DATE
71207213 ,properties_complex CLOB
@@ -7132,6 +7225,13 @@ AS OBJECT (
71327225 p_name IN VARCHAR2
71337226 ,p_properties_string IN VARCHAR2
71347227 ) RETURN SELF AS RESULT
7228+
7229+ -----------------------------------------------------------------------------
7230+ -----------------------------------------------------------------------------
7231+ ,CONSTRUCTOR FUNCTION dz_json_properties(
7232+ p_name IN VARCHAR2
7233+ ,p_properties_clob IN CLOB
7234+ ) RETURN SELF AS RESULT
71357235
71367236 -----------------------------------------------------------------------------
71377237 -----------------------------------------------------------------------------
@@ -7160,7 +7260,7 @@ AS OBJECT (
71607260 p_name IN VARCHAR2
71617261 ,p_properties_element IN dz_json_element1_obj
71627262 ) RETURN SELF AS RESULT
7163-
7263+
71647264 -----------------------------------------------------------------------------
71657265 -----------------------------------------------------------------------------
71667266 ,MEMBER FUNCTION isNULL
@@ -7170,7 +7270,7 @@ AS OBJECT (
71707270 -----------------------------------------------------------------------------
71717271 ,MEMBER FUNCTION toJSON(
71727272 p_pretty_print IN NUMBER DEFAULT NULL
7173- ) RETURN CLOB
7273+ ) RETURN CLOB
71747274
71757275);
71767276/
@@ -7217,6 +7317,29 @@ AS
72177317
72187318 END dz_json_properties;
72197319
7320+ -----------------------------------------------------------------------------
7321+ -----------------------------------------------------------------------------
7322+ CONSTRUCTOR FUNCTION dz_json_properties(
7323+ p_name IN VARCHAR2
7324+ ,p_properties_clob IN CLOB
7325+ ) RETURN SELF AS RESULT
7326+ AS
7327+ BEGIN
7328+ IF p_properties_clob IS NULL
7329+ THEN
7330+ self.properties_null := 1;
7331+
7332+ ELSE
7333+ self.properties_clob := p_properties_clob;
7334+
7335+ END IF;
7336+
7337+ self.properties_name := p_name;
7338+
7339+ RETURN;
7340+
7341+ END dz_json_properties;
7342+
72207343 -----------------------------------------------------------------------------
72217344 -----------------------------------------------------------------------------
72227345 CONSTRUCTOR FUNCTION dz_json_properties(
73227445 END IF;
73237446
73247447 IF self.properties_string IS NULL
7448+ AND self.properties_clob IS NULL
73257449 AND self.properties_number IS NULL
73267450 AND self.properties_date IS NULL
73277451 AND self.properties_complex IS NULL
@@ -7367,7 +7491,19 @@ AS
73677491 IF self.properties_string IS NOT NULL
73687492 THEN
73697493 RETURN dz_json_main.json_format(
7370- p_input => self.properties_string
7494+ p_input => self.properties_string
7495+ );
7496+
7497+ END IF;
7498+
7499+ --------------------------------------------------------------------------
7500+ -- Step 30
7501+ -- Clob output
7502+ --------------------------------------------------------------------------
7503+ IF self.properties_clob IS NOT NULL
7504+ THEN
7505+ RETURN dz_json_main.json_format(
7506+ p_input => self.properties_clob
73717507 );
73727508
73737509 END IF;
73797515 IF self.properties_number IS NOT NULL
73807516 THEN
73817517 RETURN dz_json_main.json_format(
7382- p_input => self.properties_number
7518+ p_input => self.properties_number
73837519 );
73847520
73857521 END IF;
73917527 IF self.properties_date IS NOT NULL
73927528 THEN
73937529 RETURN dz_json_main.json_format(
7394- p_input => self.properties_date
7530+ p_input => self.properties_date
73957531 );
73967532
73977533 END IF;
@@ -8061,10 +8197,10 @@ CREATE OR REPLACE PACKAGE dz_json_test
80618197AUTHID DEFINER
80628198AS
80638199
8064- C_CHANGESET CONSTANT VARCHAR2(255 Char) := '213cb0707d9933af249bd4227e3bc37e248a89ca ';
8200+ C_CHANGESET CONSTANT VARCHAR2(255 Char) := '34d20bf89b8269ad25851e24544c58537d74501c ';
80658201 C_JENKINS_JOBNM CONSTANT VARCHAR2(255 Char) := 'DZ_JSON';
8066- C_JENKINS_BUILD CONSTANT NUMBER := 33 ;
8067- C_JENKINS_BLDID CONSTANT VARCHAR2(255 Char) := '33 ';
8202+ C_JENKINS_BUILD CONSTANT NUMBER := 37 ;
8203+ C_JENKINS_BLDID CONSTANT VARCHAR2(255 Char) := '37 ';
80688204
80698205 C_PREREQUISITES CONSTANT MDSYS.SDO_STRING2_ARRAY := MDSYS.SDO_STRING2_ARRAY(
80708206 );
0 commit comments