数据库中如何在同一张表中,复制已经存在的记录,只有主键不同,其余字段均相同,不变

FAS_BILL_INFO表的主键为BILL_CODE,新生成一个new_bill_code,把old_bill_code对应的全部复制到新生成new_bill_code的记录中;

declare
    old_bill_code varchar2(44); --旧借据号  旧主键
    new_bill_code varchar2(44); --新借据号  新主键
    ...
begin
    old_bill_code := '已存在的借据号XXXXX';
    new_bill_code := '使用已有规则等或调用存储过程生成一个新的借据号';
    INSERT INTO FAS_BILL_INFO (BILL_CODE,
                               CINO,
                               LOAN_PROTOCOL_CODE,
                               EMPLOYEE_CODE,
                               LOAN_BAL,
                               ....
                              )
                        SELECT
                              new_bill_code,
                              CINO,
                              LOAN_PROTOCOL_CODE,
                              EMPLOYEE_CODE,
                              LOAN_BAL,
                              ....
                        FROM FAS_BILL_INFO
                       WHERE BILL_CODE = old_bill_code;
exception
    when others then
    dbms_output.line('INSERT INTO FAS_BILL_INFO 时,发生异常:' || SQLCODE || ':' || SQLERRM || ':' || DBMS_UTILITY.format_error_backtrace());
end; 

猜你喜欢

转载自blog.csdn.net/li_tiantian/article/details/85112409
今日推荐