@haruka333

Как на выход правильно сформировать json формат для исходящего параметра процедуры?

Имеется процедура, где вход клоб параметр и на выход клоб параметр (с целью работы с форматы json)
prosedure p_ReqGetResp (pRequest clob, pResponse clob) as
	....
	begin
	sResponse :='[';
	for i in...
	select rownum as rnum, COUNT(*) OVER() as totalCnt, s.code, s.from
           into Rnum, Totalcnt, vCode, nFrom
           from s_pres s
		   where id = :preid;
         iFind := iFind + 1;
         sZpt  := NULL; 
         IF Rnum = Totalcnt THEN
           sZpt := ',';
         END IF;		 
         sResponse    := Response || '{"code":"' || rec.code ||
                     '","numcode":"' || vCode ||
                     '","сodedate":"' ||nFrom ||'"}'|| sZpt;
       end loop;
	   sResponse := pResponse']';
	  end;

ниже в коде видно склеивание переменных для передачи в json формате -- но это не правильно понимаю
sResponse    := Response || '{"code":"' || rec.code ||
                     '","numcode":"' || vCode ||
                     '","сodedate":"' ||nFrom ||'"}'|| sZpt;

в итоге получаю корректный запрос json формата
сам запрос
{
    "pRequest": {"codes":["123","456","789"] }
}

ответ на запрос
"data": {
        "pResponse": [
            {
                "code": "123",
                "vCode": "HAR321",
                "nFrom": "21.01.24"
            },
            {
                "code": "456",
                "vCode": "HAR654",
                "сontract_date": "12.01.24"
            },
            {
                "code": "789",
                "vCode": "HAR987",
                "nFrom": "15.01.24"
            }
        ]
    }

как тоже самое сделать, только как можно правильно сделать посредством стандартов json?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Raushka
select JSON_OBJECT(KEY 'code' is rec.code,
                   KEY 'numcode' is s.code,
                   KEY 'codedate' is s.from) as clobs,
       ROWNUM as rnum,
       COUNT(*) OVER() as totalCnt,
       g.code
  into vclob, rnums, ntotalCnt
  from ...
 where ...)
как-то так
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы