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 :

énumérer les paramètres de ma SP


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 23
    Par défaut énumérer les paramètres de ma SP
    Bonsoir les As!

    Voili que je me pose la question qui suit:


    Est-il possible dans une procédure stockée d'énumérer les paramètres que je lui ai passé? Par exemple avec un:
    for each Parametre in MesParametres,
    mais en SQL

    Hein?...Je me demande?

    'Suis certain que qq s'est déjà usé le cortex avec ça


    Bien à vous!

  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
    22 002
    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 002
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS
    Vous trouverez certainement votre bonheur et une façon de faire avec cela et du SQL dynamique.

    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/ * * * * *

  3. #3
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Le problème avec ROUTINE_COLUMNS est qu'il retourne les colonnes du jeu de résultat de retour - normalement d'une fonction, je ne sais pas si cela fonctionne aussi pour une sproc - mias pas les paramètres d'entrées.

    Ceci dit je ne vois pas trop le problème. Le nombre de paramètres d'entrée d'une sproc est statique, donc tu peux toujours tester paramètre après paramètre pour savoir s'il y a une valeur.

    Voci un exemple de requête envoyé par SSMS pour énumérer les paramètres d'un sproc :

    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
    38
    39
    40
    41
    SELECT
    'Server[@Name=' + quotename(CAST(serverproperty(N'Servername') AS sysname),'''') + ']' + '/Database[@Name=' + quotename(db_name(),'''') + ']' 
    + '/StoredProcedure[@Name=' + quotename(sp.name,'''') + ' and @Schema=' + quotename(SCHEMA_NAME(sp.schema_id),'''') + ']' + '/Param[@Name=' + 
    quotename(param.name,'''') + ']' AS [Urn],
    param.name AS [Name],
    ISNULL(baset.name, N'') AS [SystemType],
    CAST(CASE WHEN baset.name IN (N'nchar', N'nvarchar') AND param.max_length <> -1 THEN param.max_length/2 ELSE param.max_length END AS int) AS 
    [Length],
    CAST(param.precision AS int) AS [NumericPrecision],
    CAST(param.scale AS int) AS [NumericScale],
    null AS [DefaultValue],
    param.is_output AS [IsOutputParameter],
    sp.object_id AS [IDText],
    db_name() AS [DatabaseName],
    param.name AS [ParamName],
    CAST(
     case 
        when sp.is_ms_shipped = 1 then 1
        when (
            select 
                major_id 
            from 
                sys.extended_properties 
            where 
                major_id = sp.object_id and 
                minor_id = 0 and 
                class = 1 and 
                name = N'microsoft_database_tools_support') 
            is not null then 1
        else 0
    end          
                 AS bit) AS [ParentSysObj],
    1 AS [Number]
    FROM
    sys.all_objects AS sp
    INNER JOIN sys.all_parameters AS param ON param.object_id=sp.object_id
    LEFT OUTER JOIN sys.types AS baset ON baset.user_type_id = param.system_type_id and baset.user_type_id = baset.system_type_id
    WHERE
    (sp.type = N'P' OR sp.type = N'RF' OR sp.type='PC')and(sp.name=N'uspGetEmployeeManagers' and SCHEMA_NAME(sp.schema_id)=N'dbo')
    ORDER BY
    param.parameter_id ASC

Discussions similaires

  1. [Débutant] Pb avec les paramètres dans lien dynamique
    Par hackwell69 dans le forum Struts 1
    Réponses: 2
    Dernier message: 21/02/2005, 11h33
  2. Réponses: 5
    Dernier message: 18/02/2005, 16h36
  3. Changer les paramètres régionaux
    Par STEF_1 dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2004, 15h39
  4. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  5. Réponses: 4
    Dernier message: 04/07/2003, 19h13

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