ORACLE 用sql语句,查出表a的数据,并遍历赋值插入到另一个表b中实现方案。

 oracle查出表a的数据,并遍历赋值插入到另一个表b中,b表在insert前验证是否已经存在,不存在则新增,存在则不做处理。

DECLARE n_count      NUMBER;
        n_temp       NUMBER;
        n_did       NUMBER;
        v_sqltext    VARCHAR2 (200);

        TYPE refcur IS REF CURSOR;
        cur_dpinfo   refcur;
BEGIN

        v_sqltext := ' SELECT distinct did FROM t_prise'; -- 拼接sql语句,查出所有不同的did
            OPEN cur_dpinfo FOR v_sqltext;  

            FETCH cur_dpinfo INTO n_did;

            WHILE (cur_dpinfo%FOUND)
            LOOP
                BEGIN 
                       SELECT COUNT (1)
                          INTO n_count
                          FROM t_param a
                         WHERE a.paramname = 'testparam1' and did = n_did;  -- 检索指定did的数据存不存在

                        IF n_count = 0    -- 不存在则新增指定的did的参数
                        THEN
                            insert into t_param(id,paramname,paramvalue,did)
                        values((select max(id+1) id from t_param),'testparam1','1',n_did);
                        END IF;
                        
                END;

                FETCH cur_dpinfo INTO n_did;
            END LOOP;

            CLOSE cur_dpinfo;
END;
/

猜你喜欢

转载自blog.csdn.net/weikzhao0521/article/details/91489372