为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】:DM8 【操作系统】:麒麟v10 【CPU】:ARM 【问题描述】*:
试一下,把INTO _T 修改成 BULK COLLECT INTO _T 另外,最后要想着 RETURN _T 我测试的过程如下
CREATE SCHEMA SA; CREATE TYPE SA.StrToColTable IS TABLE OF VARCHAR2(32767); CREATE OR REPLACE FUNCTION SA.StrToCol(_str TEXT,_separator varchar2(10)) RETURN SA.StrToColTable IS _T SA.StrToColTable; BEGIN SELECT REGEXP_SUBSTR(_str,'[^,]+',1,LEVEL) BULK COLLECT INTO _T FROM DUAL CONNECT BY LEVEL <= REGEXP_COUNT(_str,'[^,]+'); RETURN _T; END; select * from table(SA.StrToCol('11,22,33,44,55',','));
试一下,把INTO _T 修改成 BULK COLLECT INTO _T
另外,最后要想着 RETURN _T
我测试的过程如下
CREATE SCHEMA SA; CREATE TYPE SA.StrToColTable IS TABLE OF VARCHAR2(32767); CREATE OR REPLACE FUNCTION SA.StrToCol(_str TEXT,_separator varchar2(10)) RETURN SA.StrToColTable IS _T SA.StrToColTable; BEGIN SELECT REGEXP_SUBSTR(_str,'[^,]+',1,LEVEL) BULK COLLECT INTO _T FROM DUAL CONNECT BY LEVEL <= REGEXP_COUNT(_str,'[^,]+'); RETURN _T; END; select * from table(SA.StrToCol('11,22,33,44,55',','));