Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec 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 08/09/2011, 16h12   #1
Membre du Club
 
Inscription : novembre 2003
Messages : 152
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2003
Messages : 152
Points : 60
Points : 60
Par défaut [Oracle 10g] Table ou vue inexistante

Bonjour à tous,

Mon problème est simple, mais je ne me rappelle tout simplement plus de la solution !

Mon application accède à une base Oracle 10g via un fichier UDL. Une requête du type

Code :
SELECT * FROM matable WHERE champ1='valeur1'
renvoie une erreur "Table ou vue inexistante" alors que la même requête avec le préfixe tablespace devant le nom de table fonctionne :

Code :
SELECT * FROM tablespace.matable WHERE champ1='valeur1'
Je sais qu'il est possible de faire une manipulation sur la base de telle manière que la première requête fonctionne, seulement je ne me rappelle plus laquelle.

Quelqu'un aurait-il une idée? D'avance merci.
hobotalker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 16h31   #2
Membre confirmé
 
Avatar de LBO72
 
Inscription : mai 2007
Messages : 385
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 385
Points : 282
Points : 282
Bonjour,
Tu dois créer un synonyme sur ta table que tu veux que ta deuxiéme requête fonctionne.
Cdlt,
LBO72.
LBO72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 16h34   #3
Membre confirmé
 
Avatar de LBO72
 
Inscription : mai 2007
Messages : 385
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France

Informations forums :
Inscription : mai 2007
Messages : 385
Points : 282
Points : 282
et d'ailleur ce n'est pas
Code :
SELECT * FROM tablespace.matable WHERE champ1='valeur1'
Mais

Code :
SELECT * FROM owner.matable WHERE champ1='valeur1'
Cdlt,
LBO72.
LBO72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 16h34   #4
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Citation:
Envoyé par LBO72 Voir le message
Bonjour,
Tu dois créer un synonyme sur ta table que tu veux que ta deuxiéme requête fonctionne.
Cdlt,
LBO72.
ou bien
Code :
1
2
 
ALTER session SET current_schema=non_schema;
si vous ne voulez pas créer des synonymes.
__________________
Bien Cordialement
www.hourim.wordpress.com
Mohamed.Houri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 16h48   #5
Membre du Club
 
Inscription : novembre 2003
Messages : 152
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : novembre 2003
Messages : 152
Points : 60
Points : 60
Bonjour,

Merci pour votre réponse mais la deuxième fonctionne d'ores et déjà. Il faut que ce soit la première qui fonctionne.

De plus, la tentative de création de synonyme suivante
Code :
CREATE synonym matable FOR tablespace.matable;
renvoie l'erreur "cannot create a synonym with same name as object".

En attendant d'autres avis/idées.
Merci

Edit @Mohamed : je ne peux pas utiliser le nom de schéma en dur car je ne le connais pas. Plusieurs schémas ont strictement la même structure, et je veux simplement taper dans le bon schéma selon le user connecté. Je sais que la solution existe, et désolé si mes explications ne sont pas claires...
hobotalker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 17h03   #6
Membre du Club
 
Inscription : octobre 2009
Messages : 62
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 62
Points : 57
Points : 57
Bonjour,

En fait l'assertion suivante

Code :
1
2
 
CREATE synonym matable FOR tablespace.matable;
n'a pas de sens : un nom d'objet peut se préfixer par un nom de schéma, mais pas par un nom de tablespace.

Pour que la création de synonyme fonctionne, tu dois te placer dans le schéma où tu veux créer le synonyme

Code :
1
2
3
 
ALTER session SET current_schema=mon_schema2;
CREATE synonym matable FOR mon_schema1.matable;
ou sinon préfixer le synonyme lors de sa création :

Code :
1
2
 
CREATE synonym mon_schema2.matable FOR mon_schema1.matable;
marsup077 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h03.


 
 
 
 
Partenaires

Hébergement Web