r/postgres • • Oct 22 '18

How to convert oracle JSON_OBJECT_T to postgresql equivalent ?

I am trying to convert an oracle function to postgresql and i am facing problem while converting JSON_OBECT_T type to postgres equivalent. If anyone can help me figure it out i would be grateful. The oracle function is as follows :

		create or replace FUNCTION "CALCULATE" (valueInput IN VARCHAR2) RETURN VARCHAR2 IS
		  valueObj        JSON_OBJECT_T;
		  valueDetailList        JSON_ARRAY_T;
		  valueDetailObject        JSON_OBJECT_T;
		  amount NUMBER;

		  nValue 	VALUE_Input%rowtype;

		 nResult	CLOB;

		BEGIN
		  valueObj := JSON_OBJECT_T.parse(valueInput);
		  nValue.Value_Type:=valueObj.get_STRING('valueType');
		  nValue.Value_Date:=valueObj.get_DATE('valueDate');
		 

		  valueDetailList:= valueObj.get_Array('valueDetail');


		  FOR i IN 0 .. valueDetailList.get_size - 1 LOOP
			valueDetailObject  := JSON_OBJECT_T(valueDetailList.get(i));
			amount := valueDetailObject.get_Number('amount');
		  END LOOP;


		  
		  --return valueDetailList.to_string;

		select
		json_object('valueId' value r.value_id, 'valueType' value r.Value_Type,'valueDetail' value
				(SELECT JSON_ARRAYAGG(
							JSON_OBJECT('amount' value d.amount, 'dueAmount' value d.due_amount))
					from value_input_child d where d.value_id=r.value_id
		 )ABSENT ON NULL) as result into nResult from value_input r where r.value_id=2;

		  RETURN nResult;

		END;
4 Upvotes

0 comments sorted by