Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/04/2007, 23h22   #1
Nouveau Membre du Club
 
Inscription : juin 2002
Messages : 72
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 72
Points : 29
Points : 29
Par défaut [T-SQL]Fonction récurssive possible?

Bonjour,
Est il possible de créer une proc stock avec une fonction récurssive?
Si oui, comment?

Désolé, je connais pas très bien Sybase.


Merci.
jeje.r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 08h05   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Oui, on peut tout à fait créer une proc stockée récursive:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
CREATE proc recurse @val int 
AS 
print "val= %1!", @val 
IF @val = 2 
   RETURN 
else 
   exec recurse @val = 2
go
1> recurse 3
2> go
val= 3
val= 2
(RETURN STATUS = 0)
Attention toutes fois à ne pas faire de récursion infinie!

Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 15h33   #3
Nouveau Membre du Club
 
Inscription : décembre 2002
Messages : 68
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 68
Points : 26
Points : 26
Par défaut pour éviter la récursivité infinie

pour éviter que ton code ne boucle infiniment jusqu'à plantage dus erveur rajoute ce bout de code :

if @@nestlevel > 100
begin
RaiseError 21000
end

la variable du serveur @@nestlevel compte le nombre d'imbrication.
Avec un tel code, au bout de 100 appels récursifs, l'erreur 21000 est levée et la boucle s'arrête.
blaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h15.


 
 
 
 
Partenaires

Hébergement Web