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

Développement SQL Server Discussion :

Appeler une procédure stockée depuis une fonction


Sujet :

Développement SQL Server

  1. #1
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut Appeler une procédure stockée depuis une fonction
    Bonjour,

    Je sais que d'après la doc, (et Le blog d'ElSuket) il n'est normalement pas possible d'appeler une procédure stockée "normale" depuis une fonction (erreur : "Only functions and extended stored procedures can be executed from within a function"). A moins d'utiliser des procédures stockées étendues.

    En fait, je n'ai pas le choix.
    D'une part, je ne peux intégrer le contenu de la procédure dans la fonction.
    D'autre part, je souhaiterais permettre à un utilisateur de pouvoir lancer un traitement complexe à partir d'un requête (depuis une application tierce où il ne peut faire qu'une requête de type SELECT). D'où l'idée d'appeler la procédure stockée par une fonction utilisée dans une requête.

    Je viens de faire une recherche sans résultat probant, sauf le sujet suivant dont la solution renvoie également l'erreur citée plus haut.
    http://www.developpez.net/forums/d22...e-stockee-vue/

    Auriez-vous des suggestion pour une éventuelle solution de contournement ?

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    D'une part, je ne peux intégrer le contenu de la procédure dans la fonction.
    Qu'est-ce qui vous en empêche ?

    D'autre part, e souhaiterais permettre à un utilisateur de pouvoir lancer un traitement complexe à partir d'un requête
    Pourquoi ne pas écrire une procédure stockée qui fait tout le traitement ?

    Pourriez-vous être plus précis sur le traitement que vous souhaitez implémenter ?

    @++

  3. #3
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    Bonjour

    Citation Envoyé par elsuket Voir le message
    Qu'est-ce qui vous en empêche ?
    La procédure stockée fait des UPDATE, des INSERT crée une table temporaire, gère des curseurs. Bref tout ce qu'on ne peut pas faire avec une fonction.

    Citation Envoyé par elsuket Voir le message
    Pourquoi ne pas écrire une procédure stockée qui fait tout le traitement ?
    Je pense que je ne me suis pas bien exprimé. La procédure stockée fait bien tout le traitement attendu. Pas de problème à ce niveau.

    Le souci se trouve juste au niveau du déclenchement du traitement.
    On ne souhaite pas qu'il soit géré par un planificateur mais commandé par un utilisateur (lorsqu'il en a besoin).

    Or l'utilisateur ne dispose que d'une application tiers qui ne sait faire que des requêtes de sélection pour accéder à la base. Et il n'a ni les connaissances, ni les compétences pour faire du TSQL.

    Donc, j'aurais bien vu la simple exécution d'une requête pour lancer indirectement ce traitement. D'où ma question.

  4. #4
    Membre confirmé Avatar de agemis31
    Profil pro
    DBA
    Inscrit en
    Octobre 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : DBA

    Informations forums :
    Inscription : Octobre 2007
    Messages : 399
    Points : 478
    Points
    478
    Par défaut Appel direct
    Bonjour,

    Les possibilités semblent vraiment restreintes, surtout sans savoir quelle technologie utilise l'application tierce.

    Avez vous essayé d'appeler directement le nom de la procédure stockée (qui doit renvoyer un jeu de résultat dans ce cas), sans aucun select, à partir de votre application cliente ?

  5. #5
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    Salut,

    Non, en fait l'interpréteur SQL intégré dans l'appli ne permet que des SELEC. Il n'autorise pas l'utilisation d'EXEC.

    Bon, je pense que c'est mort. Je vais tâcher de regarder si je peux faire un truc avec les procédures étendues. Autrement, je me rabattrais sur l'élaboration d'un petit exécutable indépendant qui enverra une commande d'exécution de la procédure au server.

    Merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/12/2008, 09h33
  2. Réponses: 7
    Dernier message: 18/01/2008, 18h01
  3. Réponses: 27
    Dernier message: 08/03/2007, 16h09
  4. Appel d'une procédure stockée dans une procédure stockée
    Par MrEddy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/09/2006, 16h17
  5. Réponses: 3
    Dernier message: 17/01/2006, 17h12

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