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

MS SQL Server Discussion :

Fonction défini par l'utilisateur


Sujet :

MS SQL Server

  1. #1
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut Fonction défini par l'utilisateur
    Bonjour,

    j'ai pu lire qu'avec SQL Server on peut définir des fonctions nous même et j'ai bien tenté de me documenter sur ce fait.
    C'est tout a fait donc possible de créer ses propres fonctions dans SQL Server et la syntaxe est semblable à celle des procédures stockés.
    Avant j'avais une fonction dans Access qui formate et concatène mes données et dans mes requètes je fais simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select CompleteChain(MonChamp2,5,"G","0") & "." & CompleteChain(MonChamp2,5,"G","0") As Id From MaTable
    cette fonction prend les champs 1 et 2 et les complète par des 0 à gauche pour obtenir à la fin quelque choses style 00032.02005 par exemple

    Voila, maintenant, je suis passé à SQL Server et .NET et j'ai du mal à voir comment puis je l'implémenter surtout que je ne vais utiliser que du SQL

    Merci !
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CREATE FUNCTION CompleteChain
    (@champ1 varchar(30),
    @champ2 varchar(30))
    RETURNS varchar(62)
    AS
    BEGIN
    declare @ret varchar(62)
    declare @lg int
     
    set @ret=@champ1+'.'+@champ2
    set @lg=datalength(@ret)
    set @ret=replace(space(30-@lg),' ','0')+@ret 
     
    RETURN @ret
    END
    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 !

  3. #3
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    merci fadace, c'est un bon début pour moi !!

    mais cette fonction est un peu statique !! je veux avoir bien une fonction qui ajoute à gauche ou à droite par des 0 ou des espaces ...

    en tout cas je vais plus creuser cette piste !

    encore merci !

    PS : voici ma fonction originale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    '--Est utilise pour completer par des " " ou des "0" ou ... les chaines qui doivent
    '--Avoir une longueur donnee Par Ex "1" peu devenir "00001"
     
     
        Public Function Complete_Chaine(ByVal A_Completer As String, ByVal Nombre_Complet As Integer, ByVal Cadre_a As String, ByVal Complement As String) As String
            Dim i As Integer
            Dim FLAG As Boolean
            Dim tempo As String
     
            If String.Compare("-", A_Completer.Substring(1, 1) = 0) Then
                A_Completer = Mid(A_Completer, 2, Len(A_Completer) - 1)
                Nombre_Complet = Nombre_Complet - 1
                FLAG = True
            End If
     
            If String.Compare(Cadre_a, "G") = 0 Then
                If Len(A_Completer) >= Nombre_Complet Then
                    '--Si c'est trop long on coupe
                    A_Completer = A_Completer.Substring(1, Nombre_Complet)
                Else
                    For i = Len(A_Completer) + 1 To Nombre_Complet
                        A_Completer = Complement & A_Completer
                    Next
                End If
            ElseIf String.Compare(Cadre_a, "D") = 0 Then
                For i = Len(A_Completer) + 1 To Nombre_Complet
                    A_Completer = A_Completer & Complement
                Next
            End If
     
            If FLAG Then
                tempo = "-" & A_Completer
                A_Completer = tempo
            End If
     
            Complete_Chaine = Format(A_Completer, ">")
        End Function
    un exemple d'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Complete_Chaine("1", 5, "G", "0")
    qui va me retourner le 1 complèter à gauche par des 0 jusqu'a atteindre la longeure 5 : 00001
    mon blog http://www.3click-solutions.com/actualites/

    MCP VB.NET (70-305) - (70-306) - (70-310)
    Développeur PHP / Wordpress

Discussions similaires

  1. [2005] Invoquer une fonction définie par l'utilisateur dans un ordre SQL
    Par Pozzo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/02/2014, 10h08
  2. Fonctions définies par les utilisateurs
    Par zglurb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 19/10/2011, 11h19
  3. SQL dynamique dans une fonction définie par l'utilisateur
    Par messalux dans le forum Développement
    Réponses: 7
    Dernier message: 11/11/2010, 09h25
  4. SQL Server / Fonction définie par l'utilisateur
    Par borgfabr dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/03/2005, 15h14
  5. Fonctions définies par l'utilisateur
    Par DiGueDao dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/06/2003, 11h17

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