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 06/02/2011, 21h48   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 1
Points : 0
Points : 0
Par défaut try - catch sous Sybase

Bonjour, j'utilise:
Sybase Adaptive Server Enterprise version: 12.5.4


est ce qu'il existe en SQL l'équivalent des fonctions C# 'try - catch'

je m'explique, voici mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DROP procedure test
go
CREATE procedure test
AS
declare @cur int, @max int, @a float
begin
SET @cur = -10
SET @max = 10
 
while @cur < @max
begin
SET @a = convert(float, 1 / @cur) <----- ici cela va planter lorsque @cur sera égale a zéro.
 
print '%1!', @cur
SELECT @cur = @cur + 1
end
end
go
 
exec test
go
je souhaite que la procédure ne s'arrête pas lorsque @cur sera égale à zéro
exemple du nouveau code (il y a du c# pour vous faire comprendre)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DROP procedure test
go
CREATE procedure test
AS
declare @cur int, @max int, @a float
begin
SET @cur = -10
SET @max = 10
 
while @cur < @max
begin
try <--------- instruction c# (je cherche l'équivalent en sql)
begin
SET @a = convert(float, 1 / @cur)
print '%1!', @cur
end
catch <--------- instruction c# (je cherche l'équivalent en sql)
print 'conversion impossible'
 
SELECT @cur = @cur + 1
end
end
go
 
exec test
go
fdouieb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 19h47   #2
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Bonjour,

ça n'existe pas, par contre il est possible de tester si la valeur est égale a 0 et ne pas faire le traitement dans ce cas précis, ce qui donne :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
DROP procedure test
go
CREATE procedure test
AS
declare @cur int, @max int, @a float
begin
SET @cur = -10
SET @max = 10
 
while @cur < @max
begin
    IF @cur = 0
    begin
        SELECT @cur = @cur + 1
        continue -- on passe à l'itération suivante 
    end
 
    SET @a = convert(float, 1 / @cur) <----- ici cela va planter lorsque @cur sera égale a zéro.
 
    print '%1!', @cur
    SELECT @cur = @cur + 1
end
end
go
 
exec test
go
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h49.


 
 
 
 
Partenaires

Hébergement Web