Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/06/2007, 14h36   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 1
Points : 1
Par défaut Besoin d'aide pour la fonction execute immediate

Bonjour j'ai besoin de votre aide pour corriger mon scrip PL/SQL
Voici mon script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
DECLARE
v_update VARCHAR2(4000);
csql varchar2(2000);
BEGIN
    FOR tab IN 
        (SELECT owner,table_name 
        FROM all_tables 
        WHERE table_name IN ('VOD_FICHE_PRODUIT'))
    LOOP
        v_update := 'UPDATE '||tab.owner||'.'||tab.table_name||' SET ';
        FOR col IN 
            (SELECT * 
            FROM all_tab_columns 
            WHERE table_name = tab.table_name 
            AND owner = tab.owner
            AND data_type LIKE '%CHAR%')
        LOOP
            v_update := v_update || col.column_name || '= TRANSLATE(' || col.column_name||',''¿'',''''''),';
        END LOOP;
        EXECUTE IMMEDIATE SUBSTR(v_update,1,LENGTH(v_update)-1); 
    END LOOP;
END;
/
Le but de ce script est de remplacer des caracteres "¿" par les " ' "

Ereur retournéee est :

DECLARE

ORA-00911 : invalid character
ORA-06512 : at line 20
kevin8100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 14h38   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
Merci d'utiliser les balises code pour rendre le code lisible.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 14h54   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
remplace EXECUTE IMMEDIATE par DBMS_OUTPUT.PUT_LINE pour débugger
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 14h56   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
>> Le but de ce script est de remplacer des caracteres "¿" par les " ' "

Utilises REPLACE et pas translate.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 15h01   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
il doit y avoir moyen de ne faire qu'une seule boucle en plus
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 15h09   #6
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Il manque un guillemet dans le sql généré
doit être : REPLACE(XXX,'¿','''')
Code :
1
2
 
 v_update := v_update || col.column_name || '= REPLACE(' || col.column_name||',''¿'',''''''''),';
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 15h15   #7
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 1
Points : 1
Je vais essayer tout de suite
Oui il y a qu'une seule table...

Merci par avance!
kevin8100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 15h17   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par orafrance
remplace EXECUTE IMMEDIATE par DBMS_OUTPUT.PUT_LINE pour débugger
si tu ne veux pas suivre nos recommendations ça va vite être pénible
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 18h33   #9
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 1
Points : 1
Merci pour touts les réponses que vous m'avez donnée. Ca marche pour ce cas.

Est-ce que quelqu'un pourrait me corriger cette ligne svp car j'ai cette erreur qui est retounée : missing right parenthesis



Code :
v_update := v_update || col.column_name || '= REPLACE(' || col.column_name||',''¿A'',''''''''A),';
kevin8100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 18h36   #10
Membre Expert
 
Avatar de Garuda
 
Homme Philippe CHIRCOP
Chef de projet
Inscription : juin 2007
Messages : 1 109
Détails du profil
Informations personnelles :
Nom : Homme Philippe CHIRCOP
Localisation : France

Informations professionnelles :
Activité : Chef de projet
Secteur : Bâtiment

Informations forums :
Inscription : juin 2007
Messages : 1 109
Points : 1 559
Points : 1 559
Oh Kevin,
il faut un peu bosser ! Chercher un petit peu, quoi !
La réponse est évidente...
Garuda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 19h06   #11
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 1
Points : 1
Citation:
Envoyé par Garuda
Oh Kevin,
il faut un peu bosser ! Chercher un petit peu, quoi !
La réponse est évidente...
Merci Garuda pour ton encouragement

je l'ai trouvé!

Merci encore
kevin8100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 09h20   #12
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Le forum n'est pas là pour débugger ton code, par ailleurs, si le sujet est résolu merci de cliquer sur le bouton ad hoc.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 14h47   #13
Invité de passage
 
Inscription : décembre 2006
Messages : 7
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 7
Points : 1
Points : 1
Citation:
Envoyé par orafrance
Le forum n'est pas là pour débugger ton code, par ailleurs, si le sujet est résolu merci de cliquer sur le bouton ad hoc.

Merci pour tes conseils assez directs, j'ai juste posé la question car j'ai passé pasa mal de temps pourdébugguer ce truc et c'est peut etre evident pour l'un mais pas pour l'autre. Mais ce genre de réponse n'est pas tres nstructif je trouve...

Effectivement ce le bug est résolu...et merci encore à Garuda et les autres
kevin8100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 15h00   #14
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
je te rappelle que c'est une des règles du forum.

je t'ai donné une méthode pour voir la commande et débugger seul, c'est comme ça qu'on apprend, c'est pour ton bien
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h13.


 
 
 
 
Partenaires

Hébergement Web