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 :

TSQL Fonction temporaire


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut TSQL Fonction temporaire
    Bonjour,
    Je suis presque sûr d'avoir utilisé une syntaxe similaire, mais impossible de trouver sur internet!

    J'aimerais utiliser une fonction à l'interieur d'une procédure stockée ou qqchose du genre (dans une requête simple); mais une fonction qui ne serait utilisée nulle part ailleurs, donc que je ne veux pas stocker dans la base.

    Il me semble que c'était un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    with function.......
    ... définission de la fonction ...
    ...
     
    SELECT function(a), function(b) FROM ...
    Quelqu'un aurait-il plus d'informations à me donner ?

    Merci d'avance!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Je viens de tomber dessus par hasard...

    http://www.tsqltutorials.com/with-co...xpressions.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    WITH Developers (Name,Salary)
    AS
    (
    SELECT Name, Salary FROM Employees WHERE Position = 'Software Developer' 
    )
     
     
    SELECT * FROM Developers

    C'est presque ça, sauf que là je ne peux pas passer de paramêtres!

  3. #3
    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 : 44
    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
    Par défaut
    Bonjour,

    La création de fonctions temporaires ne sont pas permises par SQL Server, mais la création de procédures stockées temporaires le sont.
    En revanche je n'en ai jamais vu l'intérêt.

    Quel est plus exactement votre besoin ?

    @++

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Ce que vous nous montrez n'est pas une fonction mais un CTE, forme de requête particulière appelé expression de table et disponible à partir de la version 2005.
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/s...te-recursives/
    Ceci permet entre autre d'écrire des requêtes récursives.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    @elsuket
    Mon besoin; ici c'est dans le contexte d'un rapport RS, mais ça pourrait être dans une procédure stockée quelconque, pouvoir faire quelque chose du genre
    SELECT
    F(1) as F1,
    F(2) as F2,
    F(3) as F3

    Et il y a probablement d'autres applications auquelles je ne pense plus actuellement, mais dans ce cas là c'est pour faire un genre de transposition. Ou plus précisément récupérer un résultat compliqué pour chaque ligne retournée sans avoir à reparcourir la table, et sans avoir à recopier la requête X fois.
    Je vais chercher comment créer une proc stockée temporaire, si tu as un lien n'hésite pas!

    @SQLpro
    Effectivement ça n'est pas une fonction, mais dans le contexte où je l'utilisais, la table temporaire générée n'était pas de taille trop importante donc la méthode était à peu près compatible avec ce que je voulais faire. Merci pour ton lien, c'est effectivement ce que je cherchais (bien que ça n'était pas la réponse à ma question); je l'étudierai plus tard!
    Je m'étais déjà servi de la méthode il y a quelques temps pour récupérer une hierarchie.

    Merci à vous!
    @+

  6. #6
    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 : 44
    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
    Par défaut
    De ce que j'ai compris, vous avez besoin d'exécuter une fonction de façon itérative sur les lignes de résultat de votre rapport.
    Dans ce cas il vaudra mieux intégrer le code au rapport ou y référencer une assembly que vous aurez écrite.

    Vous pouvez faire cela dans BIDS en ouvrant votre rapport en mode conception, puis en cliquant dans la barre de menu sur Rapport > Propriétés du rapport, et, au choix mettre votre fonction dans la page Code ou référencer votre assembly dans la page Références

    @++

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

Discussions similaires

  1. fonction temporaire onclick
    Par phantasie71 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2011, 11h57
  2. [SQLEXP2005] [TSQL] fonction OpenRowset
    Par fred_malette dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/08/2006, 11h54
  3. [TSQL] Optimisation fonction levenshtein
    Par Adi81 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 17/03/2006, 15h22
  4. Fonctions et tables temporaires ?!
    Par devdev dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/12/2004, 11h46
  5. Creation d'une fonction temporaire avec droit datareader
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2004, 14h26

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