1) 내가 택할 수있는 세 가지 접근 방식이있는 oracle select 쿼리에서 json을 만들어야합니다. PL/JSON * :CLOB가> 32k (예 : 60,000 자) 인 JSON을 Oracle에서 생성하는 방법은 무엇입니까?
SELECT JSON_ARRAY(json_object('id' VALUE employee_id,
'data_clob' VALUE data_clob
)) from tablename;
또한 나는이 방법
2) 당신이 패치를 할 수없는 경우/해당 버전으로 작업 루이스 커닝햄과 조나스 Krogsboell에 의해 쓰여진 훌륭한 패키지가 함께 노력했다 http://pljson.sourceforge.net/
훌륭한 패키지입니다 (수많은 데이터베이스 설치에서 사용했습니다).
포함 된 예제는 훌륭하고 대부분의 시나리오를 포함합니다.
declare
ret json;
begin
ret := json_dyn.executeObject('select * from tab');
ret.print;
end;
/
언급이 답변에서도 너무 큰 클램프에는 작동하지 않습니다. Return results of a sql query as JSON in oracle 12c
3) 다른 접근 방식은 선택 쿼리 후 문자열을 연결할 수 있습니다.
FOR rec IN (SELECT employee_id, data_clob
FROM tablename) LOOP
IF i <> 1 THEN
v_result := v_result || ',';
END IF;
v_result := v_result || '{"employee_id":' || to_char(rec.employee_id) || ',"data_clob": ' || rec.data_clob || '}';
i := i + 1;
END LOOP;
v_result := v_result || ']}';
3 방법은 내 문제를 해결하지만 난 루프에 출마하고 싶지 않아요. 이 문제를 처리 할 수있는 Oracle 솔루션이 있습니까?
솔루션을 확인했지만 for 루프가 없으면 작동하지 않습니다.
URL을 몇 가지 솔루션을 제공 가지고, 나는이 시도했지만 작동하지 .Same 문제가오고있다.
ORA-22835: Buffer too small for CLOB to CHAR or BLOB to RAW conversion (actual: 57416, maximum: 4000)
당신이 그것을 할 수있는 방법을 말해 줄 수 있을까? 이 질문에 대한 대답에서
이 경우 데이터베이스의 버전은 무엇을? Oracle 12c (12.1.0.2)에는 기본 json 데이터 유형이 있으므로 문제를 해결할 수 있습니다 (https://docs.oracle.com/database/121/ADXDB/json.htm). EXTENDED로 설정할 수있는 DB 매개 변수 MAX_STRING_SIZE도 있습니다 (32KB의 VARCHAR2 변수 제공). Oracle Database에서 JSON 데이터는 일반적인 SQL 데이터 유형 인 VARCHAR2, CLOB 및 BLOB를 사용하여 저장됩니다 (다음을 확인하십시오. https://docs.oracle.com/database/122/ADJSN/json-in- oracle-database.htm # ADXDB6371). – g00dy
매개 변수 MAX_STRING_SIZE가 STANDARD로 설정되어 있고 사용자의 경우 CLOB (4GB)를 VARCHAR2 (4000b)로 변환하려고한다는 오류가 있습니다. 60k와 같은 것이 필요한 경우에는 VARCHAR2를 사용할 수 없으며 CLOB 만 사용할 수 있습니다. 즉, 전체 데이터를 하나의 단일 변수로 사용하려는 경우입니다. – g00dy