Parfois, je souhaite générer des instructions INSERT
à partir du contenu d'une table de base de données.Oracle équivalent à la fonction quote() de SQLite
Avec SQLite, je peux faire:
SELECT 'INSERT INTO foo (col1, col2) VALUES (' || quote(col1) || ',' || quote(col2) || ');'
FROM bar;
Avec Oracle, je dois faire:
SELECT 'INSERT INTO foo (col1, col2) VALUES (''' || replace(col1, '''', '''''') || ''',''' || replace(col2, '''', '''''') || ''');'
FROM bar;
Et d'ailleurs, il ne fonctionnera pas avec les valeurs NULL.
Y a-t-il un meilleur moyen?
Je suis sur 11.2 et il ne semble pas faire ce que OP a demandé. 'enquote_literal ('a''b')' renvoie une erreur, alors que 'enquote_literal ('a' '' '' b ')' renvoie ''a''b'' au lieu de''a' '' '' b ' – Tobia