达梦数据库,使用存储过程切分','分隔字段,生成多条数据
CREATE OR REPLACE PROCEDURE split_list AS v_name VARCHAR2(255); v_list VARCHAR2(255); v_value VARCHAR2(255); v_pos NUMBER; v_length NUMBER; BEGIN FOR rec IN (SELECT ZLY_NAME, LIST_ID FROM your_table ) LOOP v_name := rec.ZLY_NAME; v_list := rec.LIST_ID; WHILE LENGTH(v_list) > 0 LOOP v_pos := INSTR(v_list, ','); IF v_pos > 0 THEN v_value := SUBSTR(v_list, 1, v_pos - 1); v_list := SUBSTR(v_list, v_pos + 1); ELSE v_value := v_list; v_list := ''; END IF; print('Name: ' || v_name || ', List Value: ' || v_value); -- 在这里进行进一步的分组统计处理 -- 可以使用变量或临时表来存储统计结果 -- 例如,可以使用变量来计算总和 -- DECLARE -- v_sum NUMBER; -- BEGIN -- v_sum := v_sum + TO_NUMBER(v_value); -- END; -- 或者,可以将分组统计结果插入到临时表中 -- INSERT INTO temp_table (name, value) VALUES (v_name, v_value); -- INSERT INTO your_table (name, list) VALUES (v_name, v_value); END LOOP; END LOOP; END;