update sur ttes mes tables commençant par "IT_"

update sur ttes mes tables commençant par "IT_" - SQL/NoSQL - Programmation

Marsh Posté le 27-07-2005 à 14:45:25    

Bonjour,
 
Je cherche une requete pour en une seul requete faire un changement de chaine de carracteres:
je m explique :
 
G un certain nombre de table qui commence tte par "IT_"
je voudrais en une requete lui faire scruter tt les champs et  
si il trouve dans les tables commençant par "IT_" la "chaine_de_caractere_1",
il me la remplace par la "chaine_de_caractere_2".
 
1 Est ce possible ?
2 si ui comment ??
 
d'avance merci


---------------
homogene
Reply

Marsh Posté le 27-07-2005 à 14:45:25   

Reply

Marsh Posté le 27-07-2005 à 14:54:30    

O g oublié de dire que c t sous Oracle 8
 
Voila a koi je pensais que ça pouvais ressembler
 
update like 'it_%'
set ID = '0150'
WHERE ID = '0657'
 
mais niette :((


---------------
homogene
Reply

Marsh Posté le 27-07-2005 à 17:38:40    

tu peux par exemple construire un script SQL qui contiendra tous les UPDATE.
 
Exemple:
 
SELECT 'UPDATE ' || owner || '.' || table_name || ' SET ' || column_name || ' = ''' || ta_chaine_2 || ''' WHERE ' || column_name || ' = ''' || ta_chaine_1 || ''';'
FROM ALL_TAB_COLUMNS
WHERE table_name LIKE 'IT_%';
 
Si tu ne veux pas passer par la construction d'un script SQL, tu peux utiliser des fonctions Oracle permettant d'exécuter une commande SQL passée dans une chaîne de caractères (je retrouve pas la commande là, mais je l'ai déjà utilisée).

Reply

Marsh Posté le 27-07-2005 à 18:01:31    

Merci je vais essayer


---------------
homogene
Reply

Marsh Posté le 28-07-2005 à 08:56:28    

Voici une commande plus complète, qui lance les UPDATE :
 

Code :
  1. BEGIN
  2.   FOR r IN (
  3.     SELECT 'UPDATE ' || owner || '.' || table_name ||
  4.        ' SET ' || column_name || ' = ''' || 'chaine_2' ||
  5.     ''' WHERE ' || column_name || ' = ''' || 'chaine_1' || '''' AS command
  6.     FROM ALL_TAB_COLUMNS
  7.     WHERE table_name LIKE 'IT_%'
  8.   )
  9.   LOOP
  10.     EXECUTE IMMEDIATE r.command;
  11.   END LOOP;
  12. END;
  13. /
  14. COMMIT;


 
Remplace chaine_1 et chaine_2 par les bonnes valeurs :)
Et vérifie d'abord que le SELECT renvoie bien toutes les tables / colonnes que tu veux mettre à jour.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed