出现错误 ORA-01400:cannot insert NULL ... while inserting data with the help of rowtype

getting error ORA-01400:cannot insert NULL ... while inserting data with help of rowtype

我正在尝试在备份中插入数据 table 借助如下行类型

   declare
        vl_bkp_rec schema.table1%ROWTYPE; 
        BEGIN   
        FOR cur_rec IN
              (SELECT      *
              FROM schema.table1
              WHERE column_1        ='3f1d6348-014e-1000-8461-700c000493e0'
              AND primary_key_column NOT IN ('8dc81f6e-0156-1000-8291-700e000493e0')
              )
              LOOP
                INSERT INTO schema.backup_table VALUES vl_bkp_rec;
         END LOOP; 
COMMIT;
        EXCEPTION
        WHEN OTHERS THEN
          lv_err_msg := SUBSTR(SQLERRM, 1, 2999);
          DBMS_OUTPUT.PUT_LINE('Handled - error while executing script. =>'|| lv_err_msg );
          ROLLBACK;
        END;
        /

我低于错误

Handled - error while executing script. =>ORA-01400: cannot insert NULL into ("schema"."backup_table"."primary_key_column")

table1backup_table 具有完全相同的结构。 (创建 backup_table 如下)

CREATE TABLE schema.backup_table AS
  (SELECT * FROM schema.table1 WHERE rownum <1
  ); 
上面使用的

和 select 查询获取有效数据。我在这里做错了什么?

您需要按以下方式使用您的变量。当前在您的代码中,声明为 table 类型的变量未被填充:请参阅下文如何使用它。

  declare
     vl_bkp_rec table1%ROWTYPE; 
     BEGIN   
        FOR cur_rec IN
                  (SELECT      * 
                     FROM table1             
                  )
        LOOP                                
            vl_bkp_rec:=cur_rec; --Assign values of the cursor variable to your variable

            INSERT INTO  backup_table VALUES vl_bkp_rec;

        END LOOP; 
    COMMIT;
       EXCEPTION
       WHEN OTHERS THEN
         --lv_err_msg := SUBSTR(SQLERRM, 1, 2999); ---you need to decalre it befor using it
         DBMS_OUTPUT.PUT_LINE('Handled - error while executing script. =>' );
         ROLLBACK;
       END;
       /