Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 27/05/2011, 10h09   #1
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
Par défaut Utilisation d'une variable dans FROM

Bonjour, j'aurai besoin d'utiliser une variable dans un FROM mais SQL Developer ne me l'autorise pas et m'indique le code erreur suivant

ORA-06550: line 39, column 19:
PL/SQL: ORA-00942: table or view does not exist

Existe t-il un moyen de la faire ou une méthode pour contourer se problème?

Coordialement
kouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 10h44   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Utilise EXECUTE IMMEDIATE pour construire ta requête.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 27/05/2011, 11h42   #3
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
En lisant le tutoriel, je n'ai pas trouvé mon bonheur.
Voici mon code qui m'affiche l'erreur citée au dessus.

Code :
1
2
3
 
SELECT tableName INTO nomTable FROM Four 
SELECT * FROM nomTable
kouette est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/05/2011, 11h50   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Citation:
Envoyé par orafrance Voir le message
Utilise EXECUTE IMMEDIATE pour construire ta requête.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 27/05/2011, 15h47   #5
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
Même avec le tutoriel, je n'arrive pas a obtenir le résultat escompté serai t-il possible d'avoir le code avec quel explication?
kouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 15h49   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Ce serait pas mieux d'avoir ton code et le message d'erreur ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 15h53   #7
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
Je l'ai poster au-dessus.
kouette est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/05/2011, 16h06   #8
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 810
Points : 5 810
Il n'y a pas d'execute immediate dans le code que vous avez posté.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 16h07   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
je ne vois pas de EXECUTE IMMEDIATE dans votre message Faudrait faire un minimum de recherche tout de même... merci
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 09h51   #10
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
L'utilisation d'un curseur est-elle aussi possible? Car je n'arrive pas a comprendre le execute immediate.

Cette autre bout de code vous parrait-il correct?
Code :
1
2
3
4
5
UPDATE champModifer  SET nomTable = champCaract WHERE colonne1 = chaine1
         AND colonne2   = chaine2 AND colonne3   = chaine3;
      IF SQL%RowCount = 0 Then
        INSERT INTO nomTable (colonne1, colonne2, colonne3, champModifier)          
        VALUES (chaine1, chaine2, chaine3, champCaract);
champModifier, champCaract et nomTable étant des variables.
Ainsi que chaine1, chaine2, chaine3.
kouette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 10h21   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Non

c'est quand même pas compliqué : http://sheikyerbouti.developpez.com/...mmediate/#L4.5

Code :
1
2
3
4
5
6
7
8
9
10
11
PROCEDURE    Modifie_lignes ( nomTable IN VARCHAR2, champModifier IN VARCHAR2, champCaract  IN VARCHAR2) 
IS
   LC$Requete        VARCHAR2(256) ;
BEGIN
   LC$Requete:= 'UPDATE :1 SET :2 = :3 WHERE colonne1 = chaine1';
   EXECUTE IMMEDIATE LC$Requete USING nomTable,champModifier ,champCaract ;
   IF SQL%RowCount = 0 THEN
     LC$Requete:= 'INSERT INTO :1(colonne1, colonne2, colonne3, :2) VALUES (chaine1, chaine2, chaine3, :3)';
        EXECUTE IMMEDIATE LC$Requete USING nomTable,champModifier ,champCaract ;
   END IF;
END ;
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 30/05/2011, 10h42   #12
 
Homme
Étudiant
Inscription : mai 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Portugal

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 33
Points : -2
Points : -2
Merci pour votre aide j'ai réussi avec vos conseils.
kouette 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 19h58.


 
 
 
 
Partenaires

Hébergement Web