La gestion des erreurs dans Sybase

Est-il un moyen de gérer les erreurs dans SYBASE, comme le TRY-CATCH bloc que vous pouvez utiliser dans MS SQL Server, Oracle, etc?

J'ai cherché sur le web et la seule option que j'ai trouvé était la variable globale @@error, mais il ne savait travailler comme je m'y attendais, par exemple, le code suivant:

begin tran

update table1
set name = 'new name'
where name = 'old name'

update table2
set id = 1 
where id = 30
-- suppose id has a unique constraint and there's already a row with id = 1

IF @@error = 0
begin
    print 'commited'
    commit
end
else
begin
    print 'rolled back'
    rollback
end

La volonté, en effet, la restauration d'une certaine manière, parce que le nom que j'ai changé sur la table table1 conserve l'ancienne valeur que je l'ai testé ici, mais il n'a pas d'imprimer les messages, ou d'exécuter toutes les instructions que j'ai mis après les instructions qui provoque l'erreur

Quelqu'un peut m'aider dans ce domaine? Savez-vous comment Sybase erreur de manipulation fonctionne réellement?

vous pouvez configurer un bloc si sur la mise à jour de sorte qu'il n'y aurait pas une erreur. if(not exists(select 1 from table2 where id = 1))begin/* mise à jour de votre code ici*/fin
Merci pour votre réponse, mais j'ai besoin de faire quelque chose comme ça dans un script qui s'execute a beaucoup d'insertions, mises à jour et beaucoup de contraintes pourrait être violé, de sorte que les validations faudrait une énorme quantité de code. Aussi, sans ces validations le script ont déjà plus de 1 200 lignes de code, donc un bloc try-catch ou quelque chose comme ça serait plus juste, mais il semble qu'il n'est pas possible, donc je suis en train de réfléchir, juste de laisser sybase annuler la transaction en cas d'erreur par lui-même.
Essayez de prendre un coup d'oeil à la 'sp_addmessage' commande qui vous permet de définir vos propres messages d'erreur, et la 'raiserror' commande qui vous permet d'appeler ces erreurs, et de définir la valeur de @@error.
Dans ma documentation sur sybase iq, j'ai lu il y a un exception déclaration.avec la fonction d'un catch bloc.

OriginalL'auteur drigoangelo | 2012-10-09