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 :

sql dynamique fonctions qui prend en parametre une table


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Points : 6
    Points
    6
    Par défaut sql dynamique fonctions qui prend en parametre une table
    Bonjour j'ai plusieurs points à résoudre:

    *J'ai un tableau fictif de chams:nom prenom salaire .
    patson courbois 23000
    henry figo 21 0000
    thierry ronaldo 45 000
    alain larson 45 12121
    neo pitbull 12 2222


    Pour numéroter distinctement les lignes de tables j'ai utilse une simple requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select *, ROW_NUMBER() OVER  (order by (select 1))  as RowNumber from   [test].[dbo].[Table_essai];

    qui marche bien avec test ma base de donne table_essai ma table
    select 1 qui numerote selon la premiere colonne
    row_number indice de renumerotation

    patson courbois 23000 1
    henry figo 21 0000 2
    thierry ronaldo 45 000 3
    alain larson 45 12121 4
    neo pitbull 12 2222 5

    Ma première question est de transformer cette requête en procedure stockée ou fonction qui fera la même chose mais avec n'importe quelle table chargée l’intérêt est d'écrire seulement le nom de la table en paramètre et le tour est jou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE FUNCTION numero_row(@NOM_TABLE VARCHAR(200))
    returns Table
    as
              return ( select *, ROW_NUMBER() OVER  (order by (select 1))  as RowNumber from  @NOM_TABLE);

    J'ai cette erreur
    Msg 1087, Level 16, State 1, Procedure numero_row, Line 22
    Must declare the table variable "@NOM_TABLE".
    Je pense que vient du sql dynamic
    Quelqu'un aurait une idée de syntaxe de la fonction à faire???





    Ma seconde question est juste de savoir comment (toujours fonction ou procédure) echanger une ligne i et une ligne j d'une table en gros une fonction de swap

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 862
    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 : 21 862
    Points : 53 015
    Points
    53 015
    Billets dans le blog
    6
    Par défaut
    Une fonction ne peut pas par nature accepter du SQL dynamique.
    Voici quelles sont les limites des fonctions : http://blog.developpez.com/elsuket/p...liser-dans-le/

    A +

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/01/2013, 14h46
  2. Réponses: 2
    Dernier message: 01/05/2012, 21h33
  3. Création d'une fonction qui prend en argument une liste de cellule
    Par Dereck07 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/12/2007, 20h49
  4. Fonction qui prend un parametre
    Par hoaxpunk dans le forum Oracle
    Réponses: 12
    Dernier message: 13/04/2006, 12h34
  5. fonction qui en fait planter une autre
    Par ickis dans le forum C
    Réponses: 5
    Dernier message: 18/08/2003, 21h33

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