반응형
Oracle 19c에서 large json을 clob에 반환할 때 ORA-40478
오라클 19c에서 테이블을 만들었습니다.
create table SAMPLE_TABLE (
id NUMBER not null,
display_name NVARCHAR2(4000), )
스크립트를 실행할 때:
declare
i integer;
p_tmp_clob clob;
begin
select JSON_ARRAYAGG(JSON_OBJECT(t.* )) into p_tmp_clob from SAMPLE_TABLE t;
end;
저는 다음과 같은 ORA-40478 예외를 받고 있습니다.ORA-40478: 출력값이 너무 큼(최대: 4000)
varchar가 아닌 CLOB를 반환하도록 함수를 지정해야 합니다.
JSON_ARRAYAGG에도 필요할 수 있습니다. (아니면 거기에만 있을 수도 있고 - 지금은 테스트할 수 없습니다.)
declare
i integer;
p_tmp_clob clob;
begin
select JSON_ARRAYAGG(JSON_OBJECT(t.* RETURNING CLOB) RETURNING CLOB)
into p_tmp_clob
from SAMPLE_TABLE t;
end;
위의 @a_horse_with_no_name님의 정답에 대한 댓글 답변에서 제 제안을 보완하기 위해:
결국, 당신은 모든 것이 필요로 합니다.
- 한 묶음의
COALESCE
- json 배열의 clob compat가 가능한 fallback으로
- 그리고.
RETURNING CLOB
각각json_agg*
기능(안전을 위해: 보다 큰 하나의 포장 내용에만 필요합니다.varchar2(4000)
여하튼json_agg*
함수 포장(즉, 내부 객체와 외부 배열 모두) - 빈 결과 세트를 돌려줄 수 있는 각각의 것에 대해.
예:
SELECT
coalesce(
json_arrayagg(
json_object(
'something' value 'Something',
'staticEmptyArrayString' value to_clob('[]'),
'staticEmptyArrayReally' value to_clob('[]') format json,
'reallyEmptyArrayNull' value (SELECT to_clob('') FROM dual),
'reallyEmptyArray' value COALESCE((SELECT to_clob('') FROM dual), to_clob('[]')) format json,
'reallyEmptyArrayToo' value COALESCE((SELECT to_clob('') FROM dual), to_clob('[]')) format json,
'reallyEmptyArrayAlso' value COALESCE((SELECT to_clob('') FROM dual), to_clob('[]'))
format json
returning clob
)
returning clob
),
to_clob('[]')
) AS json_out
FROM dual;
베츠:
[
{
"something": "Something",
"staticEmptyArrayString": "[]",
"staticEmptyArrayReally": [],
"reallyEmptyArrayNull": null,
"reallyEmptyArray": [],
"reallyEmptyArrayToo": [],
"reallyEmptyArrayAlso": []
}
]
이 함수에서 반환되는 문자열은 데이터 형식 VARCHAR2입니다.이 절에서는 VARCHAR2 데이터 유형의 크기를 지정할 수 있습니다.바이트(BYTE)를 사용하여 크기를 바이트 수로 지정하거나 CHAR를 사용하여 문자 수로 지정합니다.기본값은 BYTE입니다.이 절을 생략하거나 이 절을 지정하지만 크기 값을 생략하는 경우 JSON_OBject는 VARCHAR2(4000) 형식의 문자열을 반환합니다.
언급URL : https://stackoverflow.com/questions/58340777/ora-40478-when-returning-large-json-into-clob-in-oracle-19c
반응형
'source' 카테고리의 다른 글
내부에 추가할 수 있습니까?후손의 이벤트 청취자를 파괴하지 않고 HTML? (0) | 2023.09.21 |
---|---|
Vim endent xml 파일 (0) | 2023.09.21 |
VBA를 사용하여 아래 셀이 비어 있는지 확인 (0) | 2023.09.21 |
ng-change에 대한 지연을 캡슐화하는 각도 지시 (0) | 2023.09.21 |
C#에서 XmlNode에서 속성 값을 읽는 방법은? (0) | 2023.09.21 |