1. 程式人生 > >資料庫中如何在同一張表中,複製已經存在的記錄,只有主鍵不同,其餘欄位均相同,不變

資料庫中如何在同一張表中,複製已經存在的記錄,只有主鍵不同,其餘欄位均相同,不變

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;