Oracle : problème requête ! MERGE INTO [RESOL] 2 bugs Oracle de fou - SQL/NoSQL - Programmation
Marsh Posté le 30-08-2006 à 12:25:39
J'ai trouvé !!!!
Gros bug ou alors fonctionnement normal d'Oracle en tout cas c'est un truc de fou !!
Pour que la jointure se passe bien et que Oracle ne renvoie pas ora-00904 : identificateur non valide, il faut que dans le select le champ de jointure apparaisse en 1ier (tmp.id avant tmp.id2 )
Un truc hallucinant, mais je suis trop content de l'avoir trouvé, sinon j'étais obligé de passer par une table temporaire (dans ce cas cela marche mais obligé d'utiliser un execute immediate ' merge into ..... ';
Solution :
Code :
|
Marsh Posté le 30-08-2006 à 12:53:53
Autre probleme maintenant, je dois remonter un champ dans le select d'une autre table (b) qui se nomment pareil (b.id). Bah quoique je fasse Oracle me fait une erreur ora-00918 : définition de colonne ambigu
J'hallucine la !!!!
Si je mets ma selection dans une vue : pareil !
J'ai l'impression que ce merge into gère très mal les requetes sources qu'on peut lui passer (bug)
Code :
|
ora-00918 : définition de colonne ambigu
Marsh Posté le 30-08-2006 à 14:13:40
2ième feinte pour résoudre le 2ième bug : passer par une fonction ex nvl sur le champ selectionné posant un problème. Impressionant Oracle, c'est la première fois que je tombe sur du nimportenawak comme cela !
Solution :
Code :
|
Bah non finalement ca empeche que Oracle gueule mais le merge se fait avec le 1ier id bien que j'ai mis tmp.id as toto et b.id as titi c'est tout le temps toto
Marsh Posté le 30-08-2006 à 18:35:06
sous SQL*Plus on a un * sous la colonne qui pose problème... ce serait bien que tu fasses un copier/coller complet
betsamee -> c'est pour ça que c'est le leader mondial
Marsh Posté le 30-08-2006 à 18:58:35
orafrance a écrit : |
CAY LE LEADER MONDIAL DUKAKA OUI
Marsh Posté le 04-09-2006 à 13:17:03
mdr orafrance
Marsh Posté le 13-06-2008 à 15:46:30
J'ai un autre problème:
SQL> SELECT SDO_UTIL.APPEND(c_c.geom, c_a.geom)
2 FROM scott.regionc c_c, scott.regionc c_a
3 WHERE c_c.name = 'TOSCANA' and c_a.name = 'UMBRIA';
WHERE c_c.name = 'TOSCANA' and c_a.name = 'UMBRIA'
*
ERREUR à la ligne 3 :
ORA-00904: "C_A"."NAME" : identificateur non valide
et aussi:
SQL> SELECT SDO_UTIL.APPEND(c_c.geom, c_a.geom)
2 FROM scott.regionc c_a, scott.regionc c_c
3 WHERE GRUPO=1;
WHERE GRUPO=1
*
ERREUR à la ligne 3 :
ORA-00918: définition de colonne ambigu
aide s'il vous plaît!!!!!!!!!!!!!!!!!!
Marsh Posté le 20-03-2015 à 21:09:12
bonsoir, svp j'essaye de faire une mise à jour sur le nombre de pret d'un client lors de l'ajout d'une nouvelle location pour ce dernier.... mais j'ai obtenus ces erreurs sachant que travaille sur oracle !!
PL/SQL: ORA-00904: "FILM"."IDFILM" : identificateur non valide
3 1 PL/SQL: SQL Statement ignored
12 23 PL/SQL: ORA-00904: "FILM"."IDFILM" : identificateur non valide
9 1 PL/SQL: SQL Statement ignored
18 23 PL/SQL: ORA-00904: "FILM"."IDFILM" : identificateur non valide
15 1 PL/SQL: SQL Statement ignored
19 8 PL/SQL: ORA-00942: Table ou vue inexistante
19 1 PL/SQL: SQL Statement ignored
CREATE OR REPLACE TRIGGER "MAJ_NB_FILM"
BEFORE
insert or delete or update of numbonloc on location
for each row
begin
if inserting then
update client set nbrfilmpret = nbrfilmpret+1
where numbonloc = :new.numbonloc
and location.numc = client.numc
and location.idfilm = film.idfilm;
end if;
if deleting then
update client set nbrfilmpret = nbrfilmpret-1
where numbonloc = ld.numbonloc
and location.numc = client.numc
and location.idfilm = film.idfilm;
end if;
if updating then
update client set nbrfilmpret = nbrfilmpret+1
where numbonloc = :new.numbonloc
and location.numc = client.numc
and location.idfilm = film.idfilm;
update loction set nbrfilmprete = nbrfilmprete-1
where numbonloc = ld.numbonloc
and location.numc = client.numc
and location.idfilm = film.idfilm;
end if;
end;
Marsh Posté le 30-08-2006 à 11:49:23
Bonjour tout le monde,
Voila j'aimerais synchroniser 2 tables qui ne sont pas sur le même serveur par le bias du sql "merge into...". J'en ai fais auparavant tout ce passe bien mais sur cette requete j'ai un probleme ora-00904 : identificateur non valide
Pourriez vous m'aider ?
ma requete est du type :
ora-00904 : identificateur non valide
voila sauf que j'ai toujours mon message d'erreur concernant la jointure ON (a.id = t.id) L'identificateur non valide porte sur t.id de cette jointure
Je ne comprends pas mais alors pas du tout, surtout que j'ai déjà réalisé ce genre de requete ailleurs et que cela marche très bien .
A savoir aussi que le select de la table source marche tres bien évidemment..
Si vous voyez l'erreur, le bug, ou si vous avez une précision un doute... n'hésitez pas
Message édité par Yop69 le 30-08-2006 à 14:14:19