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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Passer un paramètre à un curseur.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] Passer un paramètre à un curseur.

n°1794429
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 01-10-2008 à 15:03:27  profilanswer
 

J'ai un curseur comme suit :
 

Code :
  1. CURSOR cur_forest IS
  2. SELECT * FROM MaTable
  3. WHERE MonChamps = valeur;


 
Seulement ce curseur se trouve dans une boucle et d'une itération à l'autre la variable valeur peut changer. J'aimerais donc passer cette valeur en paramètre de mon curseur.
 
 
Quand je codais en 4GL il me suffisait de faire 'WHERE MonChamps = ?' puis d'utiliser un 'USING UneValeur' lors de l'OPEN (ou du FETCH je me souviens plus trop).
 
Comment faire de même en PL/SQL Oracle ?


Message édité par Kirvel le 01-10-2008 à 15:03:51

---------------
MyAnimeList
mood
Publicité
Posté le 01-10-2008 à 15:03:27  profilanswer
 

n°1794448
olivthill
Posté le 01-10-2008 à 15:31:03  profilanswer
 

Utiliser

CURSOR cur_forest (un_parametre CHAR) IS
SELECT * FROM MaTable
WHERE MonChamp = un_parametre;
...
OPEN cur_forest('abc');
FETCH ....

n°1794509
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 01-10-2008 à 17:08:55  profilanswer
 

olivthill a écrit :

Utiliser

CURSOR cur_forest (un_parametre CHAR) IS
SELECT * FROM MaTable
WHERE MonChamp = un_parametre;
...
OPEN cur_forest('abc');
FETCH ....



 
Merci, c'est tout con mais quand on sait pas la syntaxe on peut tourner longtemps des fois :D


---------------
MyAnimeList
n°1794800
MagicBuzz
Posté le 02-10-2008 à 15:03:58  profilanswer
 

comment c'est trop pas clair la syntaxe oracle... :heink:
 
en t-sql au moins c'est une variable comme une autre, pas besoin de faire un truc pareil :/

n°1794801
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 02-10-2008 à 15:07:14  profilanswer
 

Oui, mais quand c'est pas toi qui décides si on tourne sur du SQL Server ou du Oracle, ben faut faire avec [:sisicaivrai]
Et encore, la syntaxe Oracle c'est une chose, SQLPlus c'en est une autre [:prozac]


---------------
MyAnimeList
n°1794808
casimimir
Posté le 02-10-2008 à 15:23:26  profilanswer
 

on peut ouvrir le curseur en mettant directement le paramètre dans le where

n°1794810
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 02-10-2008 à 15:29:08  profilanswer
 

casimimir a écrit :

on peut ouvrir le curseur en mettant directement le paramètre dans le where


Tu veux dire mettre directement la variable dans le curseur au moment de sa déclaration ?
Si c'est ça, non ça ne marche pas, j'avais essayé avant de poster ici. [:cosmoschtroumpf]


---------------
MyAnimeList
n°1794824
casimimir
Posté le 02-10-2008 à 16:06:59  profilanswer
 

ha, ben je suis en 9i et ca ca marche
 

Code :
  1. FOR c1row IN (select balbla
  2.                         from tablebrol a
  3.                         where a.champ_brol = param)
  4. LOOP
  5.              c1row.blabla.....;           
  6. END LOOP;


 
ou alors le le cursor dans le bloc declare avec une des paramètres d'entrée de ma procédure mis dans le where
 

n°1794826
Kirvel
WOOOOH 6 MINUTES !!§!
Posté le 02-10-2008 à 16:18:50  profilanswer
 

casimimir a écrit :

ha, ben je suis en 9i et ca ca marche
 

Code :
  1. FOR c1row IN (select balbla
  2.                         from tablebrol a
  3.                         where a.champ_brol = param)
  4. LOOP
  5.              c1row.blabla.....;           
  6. END LOOP;


 
ou alors le le cursor dans le bloc declare avec une des paramètres d'entrée de ma procédure mis dans le where
 


Ya pas de curseur dans ton exemple :heink:
Même si le principe est en gros le même :o
 
EDIT : je suis en 10g


Message édité par Kirvel le 02-10-2008 à 16:19:13

---------------
MyAnimeList
n°1794836
casimimir
Posté le 02-10-2008 à 16:27:09  profilanswer
 

oué 'fin c'est un curseur qu'il y a derrière hein

mood
Publicité
Posté le 02-10-2008 à 16:27:09  profilanswer
 

n°1794888
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-10-2008 à 17:15:16  profilanswer
 

Les curseurs, c'est le mal incarné :/


---------------
J'ai un string dans l'array (Paris Hilton)
n°1794912
MagicBuzz
Posté le 02-10-2008 à 17:53:56  profilanswer
 

casimimir a écrit :

oué 'fin c'est un curseur qu'il y a derrière hein


oui, mais là c'est quand même moins puissant qu'un curseur : t'es en more forward_only / read_only / static alors qu'avec un vrai curseur t'as un accès direct aux données, avec possibilité de modifications/notifications des changements

n°1795093
casimimir
Posté le 03-10-2008 à 09:46:48  profilanswer
 

bonbonbon, ca c'est bon?
 
 
 

Code :
  1. procedure test is
  2.    TYPE test_curtype IS REF CURSOR RETURN spinfo.test%ROWTYPE;
  3.    test_curvar test_curtype;
  4.    test_rec spinfo.test%ROWTYPE;
  5.  
  6.    une_var number;
  7. BEGIN
  8.    OPEN test_curvar FOR SELECT * FROM spinfo.test where champ = une_var for update;
  9.    FETCH test_curvar INTO test_rec;
  10.    CLOSE test_curvar;
  11. END;


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

  [Oracle] Passer un paramètre à un curseur.

 

Sujets relatifs
[VBS] passer plusieurs commande MS dos en VBSboost mpl, passer une fonction dans un placeholder
Langage SQL commun Oracle/MySQLoracle et les plages.....de dates
Passage de parametre d'une popup vers page principaleScript SQLPlus Oracle ==> Programme VB
probléme avec fonction if dans oracle formsJavscript : Savoir si le curseur est a l'exterieur d'un element
Obligation de passer par page d'accueilimpossible de faire passer une valeur via un $_get
Plus de sujets relatifs à : [Oracle] Passer un paramètre à un curseur.


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