zoukankan      html  css  js  c++  java
  • oracle遍历表更新另一个表(一对多)

    declare
    cursor cur_test is
    select t.txt_desig,
    m.segment_id,
    s.code_type_direct,
    case
    when s.uom_dist_ver_lower = 'FL' then
    s.uom_dist_ver_lower || s.val_dist_ver_lower
    else
    to_char(s.val_dist_ver_lower)
    end as val
    from nvduser11.en_route_rte t
    right join nvduser11.rte_seg s
    left join fmap2.segment m
    on s.segment_id = m.segment_id on
    t.en_route_rte_id = s.en_route_rte_id;
    begin
    for c in cur_test loop
    update fmap2.segment
    set first =
    (case
    when first is null or first = '' then
    c.txt_desig
    else
    to_char(first)
    end),
    second =
    (case
    when (first is not null or first != '') and
    (second is null or second = '') then
    c.txt_desig
    else
    to_char(second)
    end),
    third =
    (case
    when (second is not null or second != '') and
    (first is not null or first != '') and (third is null or third = '') then
    c.txt_desig
    else
    to_char(third)
    end),
    firstdirect =
    (case
    when first is null or first = '' then
    c.code_type_direct
    else
    to_char(firstdirect)
    end),
    firstaltitude =
    (case
    when first is null or first = '' then
    c.val
    else
    to_char(firstaltitude)
    end),
    seconddirect =
    (case
    when (first is not null or first != '') and
    (second is null or second = '') then
    c.code_type_direct
    else
    to_char(seconddirect)
    end),
    secondaltitude =
    (case
    when (first is not null or first != '') and
    (second is null or second = '') then
    c.val
    else
    to_char(secondaltitude)
    end),
    thirddirect =
    (case
    when (second is not null or second != '') and
    (first is not null or first != '') and (third is null or third = '') then
    c.code_type_direct
    else
    to_char(thirddirect)
    end),
    thirdaltitude =
    (case
    when (second is not null or second != '') and
    (first is not null or first != '') and (third is null or third = '') then
    c.val
    else
    to_char(thirdaltitude)
    end)
    where segment_id = c.segment_id;
    end loop;
    commit;
    end;

  • 相关阅读:
    157 判断字符串是否没有重复字符
    53 翻转字符串
    671 循环单词
    8 旋转字符串
    39 恢复旋转字符串
    6 合并排序数组 Ⅱ
    64 合并排序数组
    60 搜索插入位置
    141 x的平方根
    TCSRM 593 div2(1000)(dp)
  • 原文地址:https://www.cnblogs.com/weihongli/p/4180730.html
Copyright © 2011-2022 走看看