J'écris une procédure stockée dans laquelle j'utilise try catch block.Est-il possible d'élever l'exception du système pour attraper l'exception manuellement?
Maintenant, j'ai une colonne unique dans un tableau. Lorsque je tente d'insérer valeur en double, il émet une exception à l'exception aucune 2627.
Je veux que ce soit fait comme ce
si (exists (select * from tblABC où la 'valeur' col1 =) = true) raiseError (2627) - raise erreur système qui aurait jeté si je l'aurais utilisé requête d'insertion pour insérer valeur en double
EDIT:
Je suis en utilisant la transaction qui obtient rollback sur la gestion des exceptions donc conduisant à incrémenter de @@ Valeur d'identité obtenue ecuted dans les requêtes précédentes b4 l'exception s'est produite.
Je veux vérifier toutes ces exceptions qui pourraient se produire b4 effectivement l'insertion. Pour ce faire, je vérifierais l'exception qui pourrait déclencher une erreur manuellement en utilisant l'instruction select avec if else
. Ici, je vais pouvoir attraper violation de clé unique, mais dérogation ne produit donc je jetterons exception délibérément ici, mais cette exception que je veux devrait être une exception système par exemple d'erreur 2627
et la méthode qui sera mieux, en utilisant insérer une requête ou en recherchant la valeur en double avant l'insertion en utilisant la requête Select ?
EST-IL POSSIBLE DE LEVER DU SYSTÈME importe comment EXCEPTION CAPTURE EXCEPTION MANUELLEMENT i.e. LANCER MÊME QUE SQL EXCEPTION AURAIT LANCÉ
@Remus Plz répondre pour mon édition. sry pour ne pas avoir d'informations descriptives sur mon Ques –
Après votre modification, mon message n'a besoin d'aucune mise à jour. Tout est là. –
Il n'y a pas de sémantique de relance dans TRY/CATCH de T-SQL. Vous devez lancer une exception * new *, de type personnalisé (ie code d'erreur supérieur à 50000). C'est désordonné, mais c'est l'état de l'art dans la gestion des exceptions T-SQL. –