Bonjour,
Dois-je forcement utiliser un CURSOR pour recuperer une seule ligne d'une requete select ou existe-il une autre methode?
Merci pour votre aide
Bonjour,
Dois-je forcement utiliser un CURSOR pour recuperer une seule ligne d'une requete select ou existe-il une autre methode?
Merci pour votre aide
Vous pouvez récupérer une ligne unique avec la syntaxe
Si le select ramène plus d'une ligne, vous récupérez l'erreur TOO_MANY_ROWS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Select ... Into ... From ...
Si le select ne ramène rien, vous récupérez l'erreur NO_DATA_FOUND
donc je je comprends bien, je peux faire :
Le resultat du select sera explotable dans l'objet record ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * into my_record from my_table where (id=1212)
dans la variable... pas l'objet.
pour plus d'information : http://sheikyerbouti.developpez.com/pl_sql/
Ok, par contre, j'ai un souci au niveau de la compilation, je ne peux pas utiliser une variable pour la requete select. Je m'explique :
y veux pas compiler car le nom de la table est dynamique!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 matable:='configuration' select * from matable;
y a t-il un moyen pour passer au travers ?
merci
en effet, il faut faire du sql synamique dans ce cas.
Super, on fait comment ?
Execute immediate ?
il faut utiliser "execute immediate"
petit exemple :
---------------
matable varchar2(100) :='configuration';
col1 varchar2(100) :='name';
value_col1 varchar2(100);
monsql varchar2(200);
monsql:='SELECT '||col1||' FROM '||matable;
execute immediate(monsql) into value_col1;
--> Et par la suite utiliser le variable "col1"
--> +ajouter les autres colonnes à réceptioner
NB : ne pas concaténer de ';' à la fin de la commande.
----
Ceci marche si la requête retourne au maximum 1 ligne ....
Sinon il faut utiliser la clause BULK COLLECT avec des tableaux http://sheikyerbouti.developpez.com/execute_immediate/
ou des variables de curseur/REF CURSOR (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/06_ora.htm#1510)
la fonction recherche est ton amieEnvoyé par laurent1
![]()
Merci a tous![]()
Partager