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;
/

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值