requete oracle -> requete sql ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requete oracle -> requete sql ?

par zeus » 27 juil. 2005, 17:35

Renseigne toi sur les requetes de modification de droits

il faut que tu t'identifie en tant qu'admin et que tu fasses un GRANT CREATE_VIEW ...

cherche de ce côté sur la doc SQL ou ORACLE

par Justone » 27 juil. 2005, 17:28

Change les droits de l'utilisateurs et ajoute CREATE_VIEW
J'ajoute CREATE_VIEW ou ca? Dans ma requete??

par zeus » 27 juil. 2005, 17:25

Change les droits de l'utilisateurs et ajoute CREATE_VIEW

par Justone » 27 juil. 2005, 17:22

Effectivement mon erreur vient de la, merci bcp Zeus pout ton explication.
$sql1 = 
"SELECT DISTINCT a.user_name FROM fnd_user a UNION
 SELECT DISTINCT c.responsibility_name FROM fnd_responsibility_tl c
 WHERE user_name ='ACHEVALIER'";
$sql2 = 
"SELECT DISTINCT a.user_name FROM fnd_user a 
 WHERE user_name ='ACHEVALIER'";
$sql3 = 
"SELECT DISTINCT c.responsibility_name FROM fnd_responsibility_tl c";
Lorsque j'execute $sql2 et $sql3, aucun probleme.
Mais lorsque j'execute $sql1 la j'ai un message d'erreur... :(

par zeus » 27 juil. 2005, 12:54

J'ai du penser trop vite :
quand tu fait une jointure, les SGBD créent des vues (c'est une sorte de table temporaire) dans laquelle est stockée le résultat de la jointure.

Si tu n'a pas les droits de créations de vue sur ta BdD, il est possible que la requête echoue.

Voilà ce que j'entendais !!! Je suis allé trop vite, sorry :oops:

par Justone » 27 juil. 2005, 12:19

Toutes les tables que j'utilise existe et ma requete marche bien sous TOAD (oracle)!

par zeus » 27 juil. 2005, 11:37

Lit le message d'erreur
table or view does not exist
Il me semble que c'est clair, non ?

par Justone » 27 juil. 2005, 11:36

Ou est l'erreur alors puisque ca fonctionne sous TOAD mais pas en PHP?

par pjl » 27 juil. 2005, 11:28

Le (+) = n'est pas une erreur, la preuve :
ma requete marche bien sous TOAD (oracle)!!

par Justone » 27 juil. 2005, 11:16

Voici l'erreur que j'obtiens :
Warning: ociexecute(): OCIStmtExecute: ORA-00604: error occurred at recursive SQL level 1 ORA-06502: PL/SQL: numeric or value error: character string buffer too small ORA-06512: at line 8 ORA-00942: table or view does not exist

Toutes les tables que j'utilise existe et ma requete marche bien sous TOAD (oracle)!!

Qqn sait d'ou cette erreur provient ?

Merci

par Justone » 27 juil. 2005, 10:54

Comment faire pour corriger le (+) ?

Merci

par pjl » 27 juil. 2005, 10:37

le (+) =, c'est une jointure externe mais cette écriture est dépréciée.

par Cyrano » 27 juil. 2005, 10:08

À savoir : si ta requête normale s'exécute parfaitement bien sous Oracle, tu la copies et tu la colles directement entre guillemets dans ton PHP sans rien modifier ni adapter par rapport à PHP à une exception près : si ta requête contient elle-même des guillemets.

Donc tu copies et tu colles:
$sql = "SELECT... etc... ";
Si la requête comporte des guillemets, soit tu les échappes avec des "\" soit tu les transformes en apostrophes en faisant attention que ça ne vienne pas en conflit avec des apostraphoes existant aussi à l'origine.

Ensuite, il suffit d'utiliser la bonne fonction PHP pour l'exécuter après t'être connecté à serveur Oracle..

par zeus » 27 juil. 2005, 09:43

SELECT DISTINCT
       a.user_name
     , b.full_name
     , c.responsibility_name
     , to_char(d.start_time, 'DD-MON-YYYY HH24:MI:SS') //Je connais pas to_char
     , to_char(d.end_time, 'DD-MON-YYYY HH24:MI:SS')
     , f.name
FROM   fnd_user AS a
     , per_people_v7 AS b
     , fnd_responsibility_tl AS c
     , fnd_login_responsibilities AS d
     , fnd_logins AS e
     , v$database AS f
WHERE
b.person_id (+) = a.employee_id //C'est quoi le (+) ?
AND a.user_id = e.user_id
AND e.login_id = d.login_id
AND d.responsibility_id = c.responsibility_id
AND user_name ='valeur récupérer du user'
AND d.end_time is null

requete oracle -> requete sql ?

par Justone » 27 juil. 2005, 09:28

Bonjour

Alors voila j'ai une requete que j'ai récupéré sur Oracle et je voudrais pouvoir l'éxécuter dans mon code php.

J'ai essayé de la modifier en conséquence mais rien a faire j'ai toujours un message d'erreur!

Voici le requete sans aucune modification:
SELECT DISTINCT 
       a.user_name
     , b.full_name
     , c.responsibility_name
     , to_char(d.start_time, 'DD-MON-YYYY HH24:MI:SS')
     , to_char(d.end_time, 'DD-MON-YYYY HH24:MI:SS')
     , f.name
FROM   fnd_user a
     , per_people_v7 b
     , fnd_responsibility_tl c
     , fnd_login_responsibilities d
     , fnd_logins e
     , v$database f
WHERE 
b.person_id (+) = a.employee_id
AND a.user_id = e.user_id
AND e.login_id = d.login_id
AND d.responsibility_id = c.responsibility_id
AND user_name ='valeur récupérer du user'
AND d.end_time is null
Qqn sait-il comment faire pour qu'elle s'éxécute?

Merci[/php]