나는 숫자의 테이블 :에 CSV 목록을 분할하는 기능을 가지고 SYC_IDNRTABLE과 같이 선언ORA-22905 매개 변수화 된 쿼리에
create or replace function SYC_SplitIds (IDList in varchar2) return SYC_IDNRTABLE pipelined ...
:
SYC_IDNRTable as table of spectrum.SYC_IDNR;
및 SYC_IDNR은 다음과 같습니다.
type SYC_IDNr as object(IDNr Integer)
함수 자체가 올바르게 작동합니다. 적어도이 같은 쿼리 확인을 작동합니다 그러나
INSERT INTO TEST_TEMP_IDS SELECT IDNr AS ID FROM Table(SYC_SplitIDs ('1234,5678'));
내가 대신 고정 된 문자열의 매개 변수와 같은 쿼리를 시도하는 경우 : IDLIST는 VARCHAR2로 선언
INSERT INTO TEST_TEMP_IDS
SELECT IDNr AS ID
FROM Table(SYC_SplitIDs (:IDLIST));
(32767) 같은 "1234,5678"문자열로 초기화하면 이상한 ORA-22905 오류가 발생합니다. "중첩되지 않은 테이블 항목에서 행에 액세스 할 수 없습니다."
피할 수있는 것으로 나타났습니다. 이 오류를 사용하여 :
INSERT INTO TEST_TEMP_IDS SELECT IDNr AS ID
FROM Table(SYC_SplitIDs (CAST(:IDLIST AS VARCHAR(4000)));
그러나 이제는 최대 4000 바이트로 제한됩니다. 전체 32767 바이트 범위를 다시 얻으려면 어떻게해야합니까?