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 :

Créer une fonction dynamique


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 38
    Points
    38
    Par défaut Créer une fonction dynamique
    Salut,

    Toutes mes tables ont une colonne nommée avec les 3 premières lettres de la table (généralement la clé primaire). J’ai standardisé pour pouvoir faire du code générique mais là je bloque sur une fonction qui serait chargé de vérifié qu’une donnée existe dans la clé primaire.

    En gros j’espérais faire une fonction du type :
    FonctionDeVerification (NomDeTable, Donnee)
    Et ça renvoie vrai ou faux. Vrai si la donnée se trouve bien dans la colonne (trois première lettre de la table) de la table NomDeTable.

    Mais je n’arrive pas à faire de fonction dynamique (visiblement impossible dans sqlserver) mais même dans ma procédure stockée avec exec je ne m’en sors pas pour affecter les variables.

    Quelle serait la bonne pratique dans ce cas ?

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Points : 38
    Points
    38
    Par défaut
    Re,

    Afin de rendre ma question plus claire :

    Comment faire pour passer le nom d'une table et celui d'une colonne en paramètre?

    D'avance merci !

  3. #3
    Membre averti
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Points : 393
    Points
    393
    Par défaut
    Moi j'aurais d'abords construit 1 table contenant ttes les table avec leur colonne clé:
    ex: insert into #tableDesTables select sysobjects.name as table, charindex(sysobjects.name,3)...where .....

    Ensuite faire 1 curseur qui parcours la table et pour chaque ligne exeécute ta fonction

    PS: Attention Ma syntaxe n'est pas du tout bonne.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Si j'ai bien compris tu veux gros dans le corps de ta fonction quelques choses du type :
    Exemple en procédure stockée.
    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
     
    CREATE PROCEDURE VERIF
    @NOM_TABLE VARCHAR(255),
    @VAL VARCHAR(255)
    AS
    DECLARE @CLE VARCHAR(3)
    DECLARE @REQ VARCHAR(800)
    DECLARE @NB_ENR INT 
    CREATE TABLE #TEMP( 
                NB_ENR INT
    )
     
    SET @CLE=LEFT(@NOM_TABLE,3)
    SET @REQ = 'INSERT INTO #TEMP SELECT COUNT('+@CLE+') FROM '+@NOM_TABLE+' WHERE '+@CLE+'='+@VAL
    SELECT @NB_ENR=NB_ENR FROM #TEMP
    DELETE FROM #TEMP
    IF @NB_ENR>0
        RETURN 1
    ELSE 
        RETURN 0
    GO
    Tu peux adapter le code à une fonction.
    Je renvoie 1 ou 0 car dans la version 2000 de SQL Server le type booléen n'existe pas en T-SQL. PAr contre il existe peut être en 2005. Mais comme je n'utilise pas cette version, je ne veux pas t'introduire en erreur.

Discussions similaires

  1. Créer une Fonction recherche sur Access
    Par remwideco dans le forum Access
    Réponses: 4
    Dernier message: 30/01/2006, 10h36
  2. créer une fonction avec parametre optionnel
    Par maximenet dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2006, 20h51
  3. Réponses: 6
    Dernier message: 10/08/2005, 11h36
  4. creation d'une fonction dynamiquement...
    Par bibile dans le forum Général Python
    Réponses: 2
    Dernier message: 04/08/2005, 10h38
  5. Créer une fonction mathématique pendant l'exécution
    Par zeprogrameur dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2004, 11h36

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