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

 

  1. #1
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 169
    Points : 596
    Points
    596

    Par défaut Question sur Execute statement

    Bonjour,

    Je commence à avoir des doutes sur l'execute statement. En principe dans une PS le FOR SELECT et le FOR EXECUTE STATEMENT font la même chose sauf que le 2eme peut être sujet à des erreurs de syntaxe et seulement ca sinon pour le reste c'est la même chose que le 1er n'es-ce pas ?
    En vous remerciant de m'eclairer
    Le Savoir c'est le Pouvoir !
    S.Freud

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    9 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 9 349
    Points : 22 728
    Points
    22 728
    Billets dans le blog
    11

    Par défaut

    Bonjour,

    effectivement, la commande contenue dans le STATEMENT n'est pas contrôlée (et ce que ce soit dans une boucle FOR ou pas)

    Citation Envoyé par traduction manuel
    Mises en garde avec EXECUTE STATEMENT

    • Il n'y a aucun moyen de valider la syntaxe de l'instruction jointe.
    • Il n'y a pas de vérification des dépendances pour savoir si des tables ou des colonnes ont été supprimées.
    • Les opérations seront lentes car l'instruction intégrée doit être préparée chaque fois qu'elle est exécutée.
    • La chaîne d'argument ne peut contenir aucun paramètre. Toute substitution de variable dans la partie statique de l'instruction DSQL doit être effectuée avant l'appel de EXECUTE STATEMENT.
    • Les valeurs de retour sont strictement vérifiées pour le type de données afin d'éviter les exceptions imprévisibles de type casting. Par exemple, la chaîne '1234' serait convertie en un nombre entier, 1234, mais 'abc' donnerait une erreur de conversion.
    • L'instruction DSQL soumise est toujours exécutée avec les privilèges de l'utilisateur actuel. Les privilèges accordés au déclencheur ou au SP qui contient l'instruction EXECUTE STATEMENT ne sont pas actifs pendant l'exécution de l'instruction DSQL.



    Dans l'ensemble, cette fonctionnalité est destinée uniquement à une utilisation très prudente et vous devez toujours tenir compte des facteurs ci-dessus.
    Utilisez EXECUTE STATEMENT seulement quand d'autres méthodes sont impossibles.
    il faut donc gérer la possibilité d'erreurs si besoin
    La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein

    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Berlin, Tokyo) et peut être quelques autres
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  3. #3
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 169
    Points : 596
    Points
    596

    Par défaut

    Bonjour SergioMaster,

    Citation Envoyé par SergioMaster
    il faut donc gérer la possibilité d'erreurs si besoin
    Pour ca c'est possible mais j'etait parti avec l'idée la vitesse d'execution aurait été identique à celle d'une PS avec un simple FOR SELECT etant données que c'est compiler et mis en cache et donc préparer qu'une seule fois par le serveur mais d'après les mises en gardes

    Les opérations seront lentes car l'instruction intégrée doit être préparée chaque fois qu'elle est exécutée.
    Donc c'est risqué ou juste pour de petits traitements

    Les différents critères de sélections d'une tables jointe avec d'autres tables m'ont obligés de construire une PS avec le FOR EXECUTE STATEMENT.
    Lorsque j'appelle la PS depuis le client, je dois envoyer un critère de sélection. Bon, je crois qu'il faut abandonner cette méthode en utilisant simplement un FOR SELECT dans la PS. Juste, SVP, une petite question SergioMaster, es-ce qu'on peut se risquer avec des select from PS (contenant un FOR SELECT) depuis le client avec des critères de sélection toujours depuis le client ? Je vous remercie et merci pour les mises en gardes.
    Le Savoir c'est le Pouvoir !
    S.Freud

  4. #4
    Membre confirmé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 169
    Points : 596
    Points
    596

    Par défaut

    Bon c'est régler.
    J'abandonne le select from PS pour un select from view c'est plus simple.
    Merci SergioMaster
    Le Savoir c'est le Pouvoir !
    S.Freud

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

Discussions similaires

  1. Question sur l'execution des threads
    Par khaigo dans le forum Débuter
    Réponses: 4
    Dernier message: 28/10/2009, 18h32
  2. Réponses: 5
    Dernier message: 19/08/2009, 19h54
  3. Réponses: 1
    Dernier message: 14/01/2008, 14h36
  4. [VBA] question sur le Db.execute
    Par dyree dans le forum Access
    Réponses: 1
    Dernier message: 14/08/2006, 13h34
  5. Réponses: 16
    Dernier message: 11/07/2006, 11h30

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