Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 27/12/2007, 14h56   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 2
Points : 0
Points : 0
Par défaut REQUETES PARAMETREES // Windev

J'utilise une base oracle 10g, via Windev.

Jusque là, j'avais des requetes du type :
select * from ma_table where id_client = 123
... ou idem update ou insert ... ou des fois des requete avec 6 ou 7 tables...

Je veux passer par des requêtes paramétrées :
select * from ma_table where id_client = :ID_CLIENT

Windev me le permet :
HPrepareRequeteSQL(xxx)
toto.Id_client = 123
HexecuteRequeteSQL(xxx)
HannuleDeclaration(xxx)
Et ça marche bien.

J'ai quelques questions avant d'implémenter cela.
- Si je voulais utiliser des requêtes paramétrées sous SQL+ , quelle est la syntaxe correspondante ?
- Si dans ma session, je sais que je vais faire une boucle... et lancer 50 instructions similaires, en changeant juste le ID_CLIENT, je vois bien l'intéret de passer par une requete paramétrée.
Mais, si dans ma session, je lance une seule fois ma requete , et que cette requête sera relancée 5 ou 10 fois par jour, par les différents utilisateurs ; est-ce que j'ai intérêt à utiliser une requête paramétrée ? et donc refaire le HprepareRequeteSQL à chaque fois ?
Autrement dit, le 'coût' du hpreparerequeteSQL() n'est-il pas pénalisant ?

Dans mon appli , j'ai plus de 200 requetes que je pourrains ainsi passer en requetes paramétrées...
nonodu92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2007, 10h59   #2
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Citation:
Envoyé par nonodu92 Voir le message
- Si je voulais utiliser des requêtes paramétrées sous SQL+ , quelle est la syntaxe correspondante ?
La déclaration des variables de liaison (bind variables) est spécifique à SQL*Plus mais la syntaxe dans les requêtes SQL est la même: voir le SQL*Plus® User's Guide and Reference.

Citation:
Envoyé par nonodu92 Voir le message
-
- Si dans ma session, je sais que je vais faire une boucle... et lancer 50 instructions similaires, en changeant juste le ID_CLIENT, je vois bien l'intéret de passer par une requete paramétrée.
Mais, si dans ma session, je lance une seule fois ma requete , et que cette requête sera relancée 5 ou 10 fois par jour, par les différents utilisateurs ; est-ce que j'ai intérêt à utiliser une requête paramétrée ? et donc refaire le HprepareRequeteSQL à chaque fois ?
Il est fortement recommandé d'utiliser ce type de requêtes en environnement interactif (OLTP). Idéalement, il faudrait que chaque session ne fasse pour une requête donnée qu'une seule compilation de requête (HprepareRequeteSQL) et beaucoup d'exécutions en réutilisant le code compilé de la requête.

Ne pas utiliser les variables de liaison est considéré par Oracle comme l'erreur n°2 à éviter.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2007, 12h23   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 2
Points : 0
Points : 0
Par défaut requetes paramétrées // Bind

Merci pour cette réponse.
nonodu92 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 16h55.


 
 
 
 
Partenaires

Hébergement Web