begin process at 2012 05 27 03:50:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Sybase

 > 

Functions

 > 

try catch


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

try catch

vendredi 4 février 2011 à 11:53:04 | try catch

fdouieb

Bonjour

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

je m'explique, voici mon code

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)

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




vendredi 4 février 2011 à 12:19:04 | Re : try catch

fdouieb

Information importante , j'utilise:

Sybase Adaptive Server Enterprise version: 12.5.4
dimanche 6 février 2011 à 12:33:44 | Re : try catch

Robert33

Membre Club
Bonjour fdouied

je ne ne suis pas un expert en Sybase Adaptive, et peut être existe-t-il ce type de control de flux.
mais en Transact SQL tu peux tester la variable @@Error

Code sql :
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) 
  if @@error = 0 goto success
  error:
   print  'error occured'
  success:
   print  @cur 
   select @cur = @cur + 1 
 end 
end 

go 

exec test 
go 


Bob.
C# is amazing, enjoy it!
dimanche 6 février 2011 à 17:02:44 | Re : try catch

fdouieb

Toujours le même problème

voici la sortie
------------------------ Execute ------------------------
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
return status = 0
Divide by zero occurred.
(1 rows affected)
------------------------- Done --------------------------
il signal bien qu'il y a une erreur et sort de la procédure stockée
jeudi 10 février 2011 à 19:44:03 | Re : try catch

Robert33

Membre Club

Bigre, pas sympa Sybase

avec MS-Sql voila la trace:
-10
-9
-8
-7
-6
-5
-4
-3
-2
-1
Server: Msg 8134, Level 16, State 1, Procedure test, Line 10
Divide by zero error encountered.
error occured
0
1
2
3
4
5
6
7
8
9
J'ai bien l'erreur mais il continue ...

Bob.
C# is amazing, enjoy it!
jeudi 10 février 2011 à 20:26:25 | Re : try catch

fdouieb

Robert33


voici l'equivalent sur Sybase

set arithabort arith_overflow

A+


Cette discussion est classée dans : set, test, max, go, cur


Répondre à ce message

Sujets en rapport avec ce message

REQUETE SQL TRIGGER pk est-ce qu'il marche pas ??? [ par dinous ] SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER     trigger TI_ROLE on dbo.ROLE for insert as begin      if exists      & max substring sous sql serveur ! [ par jimmy69 ] Bonjour a tous, Je debute sous ms sql serveur 2000 J'ai une table Tprogres ou les utilisateurs entrent des donnees simples ... a chaque insertion un e Trigger et recupération des données [ par croftman ] Bonjour! Voila j'ai ce trigger : [code=autre]DELIMITER | DROP TRIGGER test| CREATE TRIGGER test BEFORE DELETE ON clients FOR EACH ROW BEGIN DECL utilisation de la commande OSQL [ par asmahane24 ] Bonjour, Je lance le script de restauration de base de donnée sql7 suivant sous format d'un fichier (script0.sql)avec la commande sqlcmd (sqlcmd -S & My Sql et java [ par oumaima06 ] Salut, Je veux connecter java et MYSQL j'ai installer le mysql 5.31 et le pilote_connector_odbc 5.31 jai cree une base de donnees dont le nom est te Procedure stockée avec IN [ par backdraf ] Bonjour, J'ai une procedure stockée qui ne correspond pas a ce que je voudrais comme resultat. j'utilise la commande "IN" pour recuperer le resultat d test d'un mcd [ par profiter ] bonjour j'ai fait le mcd des regles de gestions suivantes : une facture peut etre reglé par un ou plusieurs effet une facture peut etre reglé par un résultat d'une requete tronqué - mssql/nvarchar(max)/php [ par dadbn ] Bonsoir tout le monde Voici mon problème : Des données HTML sont insérées dans ma base de données et les données sont enregistrées correctement. Par sql function MAX [ par guytwo ] Bonjour, j'ai les donnees suivantes dans une table AC , 01/01/2012 , 3 , 3333 AC , 02/01/2012 , 2 , 2222 AC , 03/01/2012 , 1 , 1111 je voudrais ré utilisation du GUID/insertion dans ma table [ par marclas ] bonjour, je travaille sous SQL server 2008 express je voudrais réalisé une insertion dans ma table ou le champ clé est de type GUID, mais j ai toujou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,061 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales