pgsql里public模式下写的函数:create or replace function public.f_arg_list(v_str text, v_delimiter text)
returns setof record
language plpgsql
as $function$
declare v_i smallint:=1;
v_result text;
begin
while v_i<=length(v_str) loop
v_result:=split_part(v_str,v_delimiter,v_i);
if v_result is null or v_result='' then exit;
else return next v_result;
end if;
v_i=v_i+1;
end loop;
end;
$function$;
应该是给定一个字符串v_str ,按照分隔符v_delimiter 来分割,然后返回结果集,达梦里好像没有具体的分割方法和返回结果集的,试了好多都不行,求指教
CREATE OR REPLACE TYPE TYPE_SPLIT AS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION SPLIT(SPLIT_STRING VARCHAR2, SPLIT_DELIMITER VARCHAR2 := ',')
RETURN TYPE_SPLIT
PIPELINED IS
IDX PLS_INTEGER;
V_STRING VARCHAR2(4000) := SPLIT_STRING;
BEGIN
LOOP
IDX := INSTR(V_STRING, SPLIT_DELIMITER);
IF IDX > 0 THEN
PIPE ROW(SUBSTR(V_STRING, 1, IDX - 1));
V_STRING := SUBSTR(V_STRING, IDX + LENGTH(SPLIT_DELIMITER));
ELSE
PIPE ROW(V_STRING);
EXIT;
END IF;
END LOOP;
END ;
select * from table(SPLIT('张三|五李|金不|靠谱','|'))