达梦数据库,使用存储过程切分','分隔字段,生成多条数据

发布时间 2023-11-30 14:20:10作者: 非帆丶

 

 

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;