ORACLE FONSTIONS

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 17 févr. 2006 à 14:52
clamou Messages postés 9 Date d'inscription lundi 30 avril 2007 Statut Membre Dernière intervention 16 mai 2009 - 16 mai 2009 à 08:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36105-oracle-fonstions

clamou Messages postés 9 Date d'inscription lundi 30 avril 2007 Statut Membre Dernière intervention 16 mai 2009
16 mai 2009 à 08:18
merci beaucou amigo
titerm Messages postés 5 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 27 février 2006
20 févr. 2006 à 13:50
Je te conseil un petit outil bien pratique pour valider tes requetes de facon indépendante de php...
http://www.sqltools.net/
titerm Messages postés 5 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 27 février 2006
20 févr. 2006 à 13:47
Et bien le plus simplement du monde, dailleurs ton exemple est correcte et devrait fonctionner, il ne faut pas oublié que les champs oracle sont typés...

$requete ="select nom_client from order where no_client ='".$no_client."'";

soit une fois parsé par php
$requete ="select nom_client from order where no_client ='$no_client'"; avec $no_client remplacé par un numéro
les quotes sont inutiles dans le cas d'un number (oracle vas convertir inutilement) , obligatoires dans le cas d'un varchar2.

Si dans ta clause where tu dois saisir une quote, il faut la doubler.
$req = "select nom_client from order where nom_client like 'mac''%'";
le % est le meta pour n'importe quelle chaine... ici cela sortira tous les mac'arthur, mac'obrian, etc ....

Il n'y a donc aucune raison que cela ne fonctionne pas...
Si tu met des variable php, au sein d'une chaine, n'oublie pas d'utiliser des " et non des ' si tu veux qu'elle soit interprété avant d'être envoyé a oracle, mais dans ton exemple, tu fais de la concaténation et donc ce n'est pas cela ton problème.
cs_bochu Messages postés 1 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 20 février 2006
20 févr. 2006 à 12:54
Merci pour tes remarques TITERM,
J'avais testé en mettant direct la variable php dans une requête oracle mais ca n'avait pas marché. Je sais pas comment tu fais pour faire fonctionner la requête sous oracle en mettant les variables php sans passer par ocibindbyname(), peut-être que j'ai oublié de configurer quelque chose, peux-tu m'en expliquer d'avantage?

Merci beaucoup par avance !
titerm Messages postés 5 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 27 février 2006
20 févr. 2006 à 08:53

# Je suis sur et certain que si à la première fois que vous utiliser un serveur Oracle, pour constituer des requête vous allez faire du genre:
# $requete ="select nom_client from order where no_client ='".$no_client."'"; dont la variable $no_client est une variable de PHP.
# $result = ociparse($connexion,$requete);
#
# Et CA NE MARCHE PAS COMME CA sous Oracle. ;~(.


Faux, cela peux marcher aussi comme cela sous oracle. Le bind de variable est à utiliser dans le cas ou une requete sera utilisée plusieurs fois pour éviter de faire des ociparse couteux, mais dans la majeur partie des cas, les requetes sont unitaire et le bind n'a aucune utilité.
Par ailleurs, le -1 pour la taille de la variable par défaut en fonction des versions de la couche OCI est plutot hasardeux...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 févr. 2006 à 14:52
Hello,

ce que j'apprécierais, c'est que tu mettes ceci dans les tutoriaux (2ème onglet, après celui des codes sources).
Il n'a pas sa place ici.
Et ce serait intéressant, car ce serait, il me semble, le 1er tuto Oracle/php :-)
Donc si tu veux bien le poster dans les tutos, je me charge d'effacer celui-ci.
Rejoignez-nous