IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Adaptive Server Enterprise Sybase Discussion :

[TSQL]Astuce ou n'importe quoi


Sujet :

Adaptive Server Enterprise Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut [TSQL]Astuce ou n'importe quoi
    bonjour a tous,

    je viens de tomber sur ce code:
    UPDATE MAtable
    SET
    CodeRet = @CodeRet ,
    DateRet = @DateRet
    FROM
    AutreTable
    WHERE
    NoOpe = @NoOpe

    SELECT "2"

    /* Sybase errors */
    SELECT @SybError = @@ERROR
    IF @SybError != 0
    BEGIN
    SELECT @NomMsg1 = convert(varchar(10),@SybError)
    PRINT @NomMsg1
    GOTO fin
    END

    A quoi sert le select "2" ?
    Je vois 2 solutions

    1° - copier/coller mal venu
    2° - est-il possible que le Select "2" réinitialise le @@ERROR a 0, ce qui fait que, comme le select "2" n'est pas envoyé au moteur, le test SELECT @SybError = @@ERROR est considéré comme la 1° instruction DML après le Update et donc si le update se passe mal pas d'exception levée, et @SybError toujours =0 ?

    Qu'en pensez-vous

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Le 'select "2"' va effectivement réinitialiser @@error - donc la requête sur @@error qui suit va toujours renvoyer 0.

    Maintenant - est-ce une erreur ou est-ce voulu... impossible à dire sans voire le code client qui interagit avec ce bloc de code pour voir si un retour de "2" est lu et interprété d'une façon ou d'une autre.

    Michael

  3. #3
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    merci de ta confirmation Mickael.

    le code qui suit est juste un
    commit
    return
    fin:
    rollback
    donc, le commit se fera même si le update explose ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Effectivement, le GOTO FIN ne sera jamais exécuté.

    Michael

  5. #5
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    C'est une "méthode" de debuggage permettant de skipper un test d'erreur et, du même coup, d'afficher où on en est...

    ... mais en fin de recherche, généralement, on supprime ce type de ligne

    Personnellement, je suis pas trop pour ce type de méthode à l'arrache...
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant] set linesize me fait n'importe quoi
    Par Mathusalem dans le forum Oracle
    Réponses: 6
    Dernier message: 20/04/2006, 16h22
  2. Programme qui m'affiche n'importe quoi
    Par Gryzzly dans le forum C
    Réponses: 8
    Dernier message: 02/01/2006, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo