|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
![]() ![]() ![]() |
Bonjour,
je n'arrive pas à exécuter une procédure Code :
Citation:
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 271 ![]() |
C'est l'utilisation de rownum qui n'est pas bonne. Pour plus d'info :
ROWNUM Pseudocolumn [edit] Oups en fait le code n'est pas bon non plus.. SELECT INTO Il faut utiliser un curseur : FOR (curseur) Mais l'utilisation de rownum est également fausse |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() |
Un curseur ! que pour cela ?
Et si j'ai une requête qui a besoin d'un paramètre qui doit être calculé bien avant, je fais comment ? Merci, je vais y jeter un coup d'oeil.
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 440 ![]() |
C'est quoi le but de ce select et de cette procédure ?
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() |
C'est un exemple didactique simplement,
le but est d'utiliser la variable plutôt que de coder en dur la valeur. Je fais mes premiers pas en PL/SQL les amis. Code :
__________________
Découvrez la FAQ de MS SQL Server. La chance accorde ses faveurs aux esprits avertis ! |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : août 2009 Messages : 779 ![]() |
Ce que ta base te signale, c'est que faire un select sans utiliser la ou les valeur(s) retournée(s), ça ne sert à rien, donc il refuse de compiler.
En l'occurrence, qu'est-ce que tu veux faire de tes valeurs "sysdate + R.i" ? Si tu veux les afficher, tu peux passer par un curseur, puis boucler et afficher la valeur avec DBMS_OUTPUT. Tu peux aussi faire un OPEN (ref_cursor) FOR et retourner un SYS_REFCURSOR ... Bref, il faut savoir ce que tu veux faire de tes résultats |
|
|
00
|
|
|
#7 | ||
|
Membre expérimenté
![]() François Inscription : février 2010 Messages : 306 ![]() |
Ben l'un dans l'autre, quand on y reflechis un peu ca se comprend qu'il faille un curseur non?
Si le select renvoie 4 lignes, comment le PLSQL devine quel résultat il doit mettre dans la variable ? Le premier, le dernier, le plus grand ? Il ne peut pas. Donc il faut un curseur, ou bien ramasser tous les résultats. Mais, c'est vrai qu'utiliser un curseur pour ça c'est un peu pénible. Et pas optimisé du tout car tu alternes en permanence le PLSQL et le SQL. Du coup, tu as la clause BULK COLLECT INTO Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com