我有一个函数,它将一个 CSV 列表拆分为一个数字表。:
create or replace function SYC_SplitIds
(IDList in varchar2)
return SYC_IDNRTABLE pipelined ...
其中 SYC_IDNRTABLE 声明为:
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'));
但是,如果我使用参数而不是固定字符串尝试相同的查询:
INSERT INTO TEST_TEMP_IDS
SELECT IDNr AS ID
FROM Table(SYC_SplitIDs (:IDLIST));
其中 IDLIST 被声明为 VARCHAR2(32767) 并使用与以前相同的 '1234,5678' 字符串进行初始化,我得到一个,至少对我来说,奇怪的 ORA-22905 错误:“无法访问来自非嵌套表项的行”< /p>
我发现我可以使用以下方法避免此错误:
INSERT INTO TEST_TEMP_IDS SELECT IDNr AS ID
FROM Table(SYC_SplitIDs (CAST(:IDLIST AS VARCHAR(4000)));
但现在我限制为最大 4000 字节,这还不够……如何恢复完整的 32767 字节范围?