오류: ORA-01704: 문자열 리터럴이 너무 깁니다.
데이터 유형이 있는 필드에서 4000자 이상의 값을 설정하려고 시도하는 동안CLOB
, 다음의 에러가 표시됩니다.
ORA-01704: 문자열 리터럴이 너무 깁니다.
임의의 제안입니다.무제한 문자 값을 설정해야 하는 경우 어떤 데이터 유형이 적용됩니까? 제 경우, 공교롭게도 약 1자 정도입니다.15000
문자
주의: 저장하려는 긴 문자열은 ANSI로 인코딩되어 있습니다.
CLOB를 사용할 때는 무엇을 사용하고 있습니까?
모든 이벤트에서 PL/SQL을 사용할 수 있습니다.
DECLARE
str varchar2(32767);
BEGIN
str := 'Very-very-...-very-very-very-very-very-very long string value';
update t1 set col1 = str;
END;
/
아래 쿼리와 같이 문자를 여러 청크로 분할하여 시도해 보십시오.
Insert into table (clob_column) values ( to_clob( 'chunk 1' ) || to_clob( 'chunk 2' ) );
그것은 나에게 효과가 있었다.
이 문제를 해결하기 위해 저는 이미 제안되어 있는 것을 조합하여 사용해야 했습니다.
DECLARE
chunk1 CLOB; chunk2 CLOB; chunk3 CLOB;
BEGIN
chunk1 := 'very long literal part 1';
chunk2 := 'very long literal part 2';
chunk3 := 'very long literal part 3';
INSERT INTO table (MY_CLOB)
SELECT ( chunk1 || chunk2 || chunk3 ) FROM dual;
END;
이게 도움이 됐으면 좋겠다.
스플릿은 삽입하는 문자에 따라 4000자까지 동작합니다.특수 문자를 삽입하는 경우 실패할 수 있습니다.안전한 유일한 방법은 변수를 선언하는 것입니다.
매우 오래된 질문이지만, 경험을 공유하는 것이 다른 사람에게 도움이 될 수 있다고 생각합니다.
"||"를 사용하여 4000바이트/문자 청크로 분할하면 하나의 쿼리에 큰 텍스트를 저장할 수 있습니다.
다음 쿼리를 실행하면 다음이 표시됩니다.
- 4000바이트를 포함하는 필요한 청크 수
- 나머지 바이트
이 예에서는 15000바이트(문자)로 이어지는 텍스트를 저장하려고 하기 때문에,
select 15000/4000 chunk,mod(15000,4000) remaining_bytes from dual;
결과:
즉, 4000바이트의 3개의 청크와 3000바이트의 1개의 청크를 연결해야 합니다.이렇게 하면 다음과 같습니다.
INSERT INTO <YOUR_TABLE>
VALUES (TO_CLOB('<1st_4K_bytes>') ||
TO_CLOB('<2nd_4K_bytes>') ||
TO_CLOB('<3rd_4K_bytes>') ||
TO_CLOB('<last_3K_bytes>)');
- Clob을 반환하는 함수를 작성하다
create function ret_long_chars return clob is
begin
return to_clob('put here long characters');
end;
update table set column = ret_long_chars;
INSERT INTO table(clob_column) SELECT TO_CLOB(q'[chunk1]') || TO_CLOB(q'[chunk2]') ||
TO_CLOB(q'[chunk3]') || TO_CLOB(q'[chunk4]') FROM DUAL;
sql developper에서는 받아들여진 답변이 기능하지 않았지만, 이 답변과 다른 답변의 조합이 기능했습니다.
DECLARE
str varchar2(32767);
BEGIN
update table set column = to_clob('Very-very-...-very-very-very-very-very-very long string value');
END;
/
언급URL : https://stackoverflow.com/questions/13945710/error-ora-01704-string-literal-too-long
'source' 카테고리의 다른 글
Postgre 저장 방법Spring Boot + JPA를 사용한SQL jsonb? (0) | 2023.02.16 |
---|---|
MongoDB GUI 클라이언트(크로스 플랫폼 또는 Linux) (0) | 2023.02.16 |
html에서 rootScope 변수 사용 (0) | 2023.02.16 |
Mongoid 설치 후 Active Record 생성기를 사용하시겠습니까? (0) | 2023.02.16 |
라벨의 Angular.js ng-click 이벤트가 두 번 발생합니다. (0) | 2023.02.16 |