Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1832 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle 10.2] PL/SQL Paramètre Curseur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle 10.2] PL/SQL Paramètre Curseur

n°1509176
hugo25
Posté le 31-01-2007 à 15:19:00  profilanswer
 

Bonjour,
 
j'aimerais savoir si il est possible d'utiliser un paramètre dans un curseur qui me permettent de mofifier la requete :
 

Code :
  1. -- Déclaration du curseur
  2.     CURSOR C1 IS
  3.        SELECT MAX(table.champs) AS ch1
  4.        FROM table
  5.  
  6.     lireC1 C1 %ROWTYPE;


J'aimerais passer en paramètre dans un cuseur une variable qui me permette de changer la fonction MAX en MIN.
 
Quelquechose qui ressemblerait à dans l'esprit :

Code :
  1. CURSOR C1 (v1 VARCHAR) IS
  2.        SELECT v1(table.champs) AS ch1
  3.        FROM table
  4.  
  5.     lireC1 C1 %ROWTYPE;


 
Est-ce possible ?


Message édité par hugo25 le 31-01-2007 à 15:20:30
mood
Publicité
Posté le 31-01-2007 à 15:19:00  profilanswer
 

n°1509318
darkfrost
Posté le 31-01-2007 à 20:35:45  profilanswer
 

Euh cela m'étonnerait fortement...
 
Pourquoi plutot ne pas faire deux curseurs C1 et C2 et faire le choix de celui que tu vas ouvrir dans un IF en fonction de ton paramètre ?
 
Ou encore sélectionner le MIN et le MAX dans ton curseur, et choisir la colonne que tu souhaites utiliser après lors de ton traitement ?

n°1509320
hugo25
Posté le 31-01-2007 à 20:46:01  profilanswer
 

darkfrost a écrit :

Euh cela m'étonnerait fortement...
 
Pourquoi plutot ne pas faire deux curseurs C1 et C2 et faire le choix de celui que tu vas ouvrir dans un IF en fonction de ton paramètre ?


il y a du code dans le FOR, donc duplication de ce code. A moins que je n'ai pas compris ta suggestion ?
 

darkfrost a écrit :

Ou encore sélectionner le MIN et le MAX dans ton curseur, et choisir la colonne que tu souhaites utiliser après lors de ton traitement ?

Oui, ca j'y ai pensé.
En fait j'ai résolu le problème en utilisant la fonction decode(variable, valeur1, traitement1, valeur2, traitement2,...).
Cette requête retournant plusieurs milliers de ligne, je ne sais pas quelle est le plus optimisé : utiliser décode dans la requête du curseur ou séléctionné le min et le max et choisir ensuite.

n°1509703
darkfrost
Posté le 01-02-2007 à 16:58:06  profilanswer
 

hugo25 a écrit :

il y a du code dans le FOR, donc duplication de ce code. A moins que je n'ai pas compris ta suggestion ?


 
Ben oui mais perso une duplication de code dans ce but précis ça ne me gène pas, à partir du moment ou tu n'ouvres qu'un seul des deux curseurs. Je dirais qu'apres c'est plus un soucis d'esthetisme...
 

hugo25 a écrit :


Oui, ca j'y ai pensé.
En fait j'ai résolu le problème en utilisant la fonction decode(variable, valeur1, traitement1, valeur2, traitement2,...).
Cette requête retournant plusieurs milliers de ligne, je ne sais pas quelle est le plus optimisé : utiliser décode dans la requête du curseur ou séléctionné le min et le max et choisir ensuite.


 
J'aurais tendance à dire qu'un DECODE pèse beaucoup moins lourd que la récupèration inutile d'une de tes deux colonnes (MIN ou MAX) comme je te l'avais proposé. Donc je resterai sur ta solution ;) !

n°1509842
casimimir
Posté le 01-02-2007 à 22:31:30  profilanswer
 

ou bien tu fais du sql dynamique, comme ton curseur ne te sert que a retourner une valeur cela marchera tres bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle 10.2] PL/SQL Paramètre Curseur

 

Sujets relatifs
Activation des pages persos chez free, question SQLExecuter un script SQL ex: "toto.SQL"
[SQL Server 2000] Afficher plusieurs rapports avec Reporting Services[Oracle 10.2] Erreur dans fonction stocké PL/SQL
Utilisation de SQL Mail[SQL] une question de pur debutant
[PL/SQL] Configuration[Résolu en 1h30 !][SQL] requête , sous-requêtes
[SQL Server][RESOLU] Mise à jour de base de donnée 
Plus de sujets relatifs à : [Oracle 10.2] PL/SQL Paramètre Curseur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR