ORA-22835:버퍼가 너무 작고 ORA-25137:데이터 값의 범위

0

질문

우리가 사용하는 소프트웨어는 제한된 Oracle 기능입니다. 필터를 필터링을 통해 CLOB 필드를 확인함으로써 그것은 특정 값이 있습니다. 일반적으로,외부의 이 소프트웨어 나는 것 같은 것:

DBMS_LOB.SUBSTR(t.new_value) = 'Y'

그러나 이 지원되지 않습니다 그래서 나는 사용하려고 시도하 CAST 대신 합니다. 나가려고 많은 다른 시도 하지만 지금까지 이들은 무엇을 발견:

소프트웨어가 내장된 쿼리 검사/검사기 및 이들은 그것은 잘못된 것으로 보여줍:

DBMS_LOB.SUBSTR(t.new_value)
CAST(t.new_value AS VARCHAR2(10))
CAST(t.new_value AS NVARCHAR2(10))

그러나,이 검사는 받아들이 이러한:

CAST(t.new_value AS VARCHAR(10))
CAST(t.new_value AS NVARCHAR(10))
CAST(t.new_value AS CHAR(10))

불행하게도,도 검사할 수 있는 이러한 것들을 통해 이동,실행하는 경우 쿼리 데이터를 가져올,나 ORA-22835: Buffer too small 사용하는 경우 VARCHARNVARCHAR. 나 ORA-25137: Data value out of range 사용하는 경우 CHAR.

이 있는 다른 방법으로 시도 할 수 있었는지 확인하는 내 CLOB 필드를 특정 값이 있는 경우 데이터를 필터링? 지 않은 경우,문제를 해결하려면 어떻게 해야 하 나의 현재 문제를 해결합니까?

database oracle
2021-11-23 16:17:40
2

최고의 응답

1

오류에 당신을 나타내는 오라클이려고 적용 CAST(t.new_value AS VARCHAR(10)) 하는 행 new_value 은 10 개 이상의 문자입니다. 는 의미가 주어진하는 설명 new_value 일반적인 감사는 필드의 값에서 큰 숫자의 테이블과 함께 다양한 데이터의 길이 있습니다. 는,당신이 필요로하는 구조화하는 쿼리에는 방식으로 힘을 최적화 프로그램을 줄이는 설정의 행하신 적용 cast 을 내려 그 곳 사람들 new_value 는 단 하나의 캐릭터를 적용하기 전에 cast.

지 모르는 어떤 종류의 범위를 소프트웨어 사용을 제공합 구성하기 위해 코드,내가 무엇인지 옵션이 있다. 는 것을 인식하는 방법에 따라 견고한을 최적화 프로그램은 매우의 비트를 선택할 수 있는 유연성을 적용하는 조건자와 기능에 투영에 임의의 순서입니다. 그래서 경우에도 당신이 작동하는 방법 한 번,그것은 미래에 작동하지 않을 경우 통계 변경 또는 데이터베이스로 업그레이드 및 오라클 결정을 선택하는 다른 계획이다.

2021-11-24 16:59:52
0

으로 이것을 사용하여 샘플 데이터

create table tab1(col clob);
insert into tab1(col) values (rpad('x',3000,'y'));

당신을 사용할 필요가 dbms_lob.substr(col,1) 을 얻은 첫 번째 문자(에서 기본값 offset=1)

select dbms_lob.substr(col,1) from tab1;

DBMS_LOB.SUBSTR(COL,1)
----------------------
x

참고로 기본 amount (=길이)의 하위 문자열이 32767 그래서만 사용 DBMS_LOB.SUBSTR(COL) 이 반 이상을 기대합니다.

CASTCLOB 잘라 문자열을 casted 길이지만,(으로 관찰하는)반환한 예외 ORA-25137: Data value out of range 는 경우 원래의 문자열입니다 longert 는 casted 길이 있습니다.

로서 설명한 CAST 문의

주 직접 지원하지 않는 모든 LOB 데이터 유형이 있습니다. 할 때 사용하여 캐스팅으로 변환하 CLOB 값을 문자 데이터 형식 또는 BLOB 값으로 원시 데이터 입력,데이터베이스 암시적으로 변환 LOB 값을 문자 또는 원시 데이터한 다음을 명시적으로 캐스트 결과 값을 대상으로 데이터를 입력합니다. 는 경우 그 결과 값보다 큰 목표 형식 데이터베이스는 오류를 반환합니다.

2021-11-23 17:06:33

불행하게도를 추가한 후에도 오프셋,쿼리를 인식하지 못 검증 DBMS_LOB.SUBSTR() 그래서 사용할 수 없습니다. 나는 생각이 CAST 은 자를 수 있는 문자열기 때문에 우리 또한 사용에 대한 해결책 TRUNC: CAST(CAST(date_field AS VARCHAR(9)) AS DATE) 그것은 작동합니다. 그것은 시간의 부분입니다. 라 우리가 뭔가를 할 수 있는 유사한 오신것을 환영합니다.
Patrick Gregorio

네이 VARCHAR 그러나 힙합 아 CLOB 업데이트 했 대답이다. @PatrickGregorio
Marmite Bomber

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................