|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : février 2003 Messages : 148 ![]() |
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 |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
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. Si le select ne ramène rien, vous récupérez l'erreur NO_DATA_FOUND
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : février 2003 Messages : 148 ![]() |
donc je je comprends bien, je peux faire :
Code :
|
||
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
dans la variable... pas l'objet.
pour plus d'information : http://sheikyerbouti.developpez.com/pl_sql/ |
|
|
00
|
|
|
#5 | ||
|
Nouveau Membre du Club
![]() Inscription : février 2003 Messages : 148 ![]() |
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 :
Code :
y a t-il un moyen pour passer au travers ? merci |
||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
en effet, il faut faire du sql synamique dans ce cas.
|
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : février 2003 Messages : 148 ![]() |
Super, on fait comment ?
|
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : février 2003 Messages : 148 ![]() |
Execute immediate ?
|
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : octobre 2002 Messages : 227 ![]() |
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. ---- |
|
|
00
|
|
|
#10 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
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) |
|
|
00
|
|
|
#11 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Nouveau Membre du Club
![]() Inscription : février 2003 Messages : 148 ![]() |
Merci a tous
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com