J'essaie d'insérer des données dans une table de sauvegarde avec l'aide de rowtype comme ci-dessousobtenir l'erreur ORA-01400: ne peut pas insérer NULL ... tout en insérant des données avec l'aide de rowtype
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;
/
je reçois ci-dessous erreur
Handled - error while executing script. =>ORA-01400: cannot insert NULL into ("schema"."backup_table"."primary_key_column")
mais table1
et backup_table
ont exactement la même structure. (Créé backup_table
comme ci-dessous)
CREATE TABLE schema.backup_table AS
(SELECT * FROM schema.table1 WHERE rownum <1
);
et requête de sélection utilisé ci-dessus va chercher des données valides. Qu'est-ce que je fais mal ici?
Vous avez sélectionné les données dans la variable curseur cur_rec. La variable vl_bkp_rec n'est pas utilisée et est NULL; – Mike
Pourquoi ne pas utiliser 'insert dans la table backup_table select * from table1 où ...' – Mike