根据一列相同,把另一列not null的字段更新到null字段中

本文介绍了一种使用Oracle SQL游标更新表中特定列的方法。通过创建存储过程P_UPDATE_COLAS并使用游标cur_f,可以遍历mt_kh表中mtjj不为空的所有记录,并将mtjj列的值更新为其当前值。该方法适用于需要逐行处理并更新数据的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 上面讲述的意思你看了下面的例子就能完全明白了。把这个方式

SQL> select  khid,mtname,mtjj from mt_kh t where t.khname='张诺';
 
      KHID MTNAME                                                                           MTJJ
---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
       216 中华网                                                                          
       476 中华网                                                                           中华网中国无线应用、互联网服务及网上游戏公司中华网科技公司(创业板代号:8006)为CDCCorporation(前称为chinadotcomcorporati
       954 中华网                                                                          
 

实现成:

 

SQL> select  khid,mtname,mtjj from mt_kh t where t.khname='张诺';

      KHID MTNAME                                                                           NVL(MTJJ,'涓崕缃戜腑鍥芥棤绾
---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
       216 中华网                                                                           中华网中国无线应用、互联网服务及网上游戏公司中华网科技公司(创业板代号:8006)为CDCCorporation(前称为chinadotcomcorporati
       476 中华网                                                                           中华网中国无线应用、互联网服务及网上游戏公司中华网科技公司(创业板代号:8006)为CDCCorporation(前称为chinadotcomcorporati
       954 中华网                                                                           中华网中国无线应用、互联网服务及网上游戏公司中华网科技公司(创业板代号:8006)为CDCCorporation(前称为chinadotcomcorporati
 
SQL>

 

 

 经过思考,此方式对不同列的处理,是不能直接来实现的,只能通过游标的方式来实现。因为此过程游标的方式来实现。实现方式为:

 

 createorreplaceprocedure P_UPDATE_COL AS

 

  v_mtname mt_kh.mtname%type;

  v_khname mt_kh.khname%type;

  v_mtjj   mt_kh.mtjj%type;

  cursor cur_f is

    SELECTdistinct m1.mtname, m1.mtjj

      FROM mt_kh m1

     WHERE m1.mtjj isnotnull;

BEGIN

 

  open cur_f;

  loop

    fetch cur_f

      into v_mtname, v_mtjj;

    EXITWHEN cur_f%NOTFOUND;

    update mt_kh set mt_kh.mtjj = v_mtjj where mtname = v_mtname;

    commit;

  endloop;

  close cur_f;

 

END P_UPDATE_COL;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值