Bonsoir à tous,
J'ai quelques soucis avec un DELETE dans plusieurs tables. Est-ce que quelqu'un pourrait m'orienter car je pense que je suis dans l'erreur.
Je vous explique mon problème. Je voudrais faire un delete dans plusieurs tables (partout le même where). Voici comment je fais aujourd'hui:
Je pense que je suis dans l'erreur... Est-ce qu'il n'y aurait pas moyen d'initialiser un tableau comme on peut le faire en C avec l'ensemble des noms de table ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 procedure deleteSomething(inIdSomething IN NUMBER) IS sqlStmt VARCHAR2(2000); CURSOR tables_cur IS SELECT 'TABLENAME1' AS TN FROM DUAL UNION ALL SELECT 'TABLENAME2' AS TN FROM DUAL UNION ALL SELECT 'TABLENAME3' AS TN FROM DUAL UNION ALL SELECT 'TABLENAME4' AS TN FROM DUAL ; BEGIN FOR aTabe_rec in tables_cur LOOP sql_stmt := 'DELETE FROM '||aTabe_rec.TN || ' WHERE IDSOMETHING = ' || inIdSomething ||''; dbms_output.put_line(sql_stmt); EXECUTE IMMEDIATE sql_stmt; END LOOP; -- delete from the main table; END;
Ou quelqu'un a-t-il une autre idée pour faire ces suppressions dans le bon ordre (dépendances pris en compte automatiquement?)
Merci d'avance.
Partager