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 :

Procédure stockée dans sql server 2008


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 77
    Par défaut Procédure stockée dans sql server 2008
    Bonjour,

    Pouvez vous me donner un exemple de création d'une procédure stockée (paramétrée) dans sql server 2008, qui reçoit comme paramètre l'age d'une personne et retourne une chaine de caractère représentant l'intervalle où se situe cet age

    ex:

    paramètre => 25

    Résultat: => '20-30'

    Merci pour votre aide

  2. #2
    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,

    Créez plutôt une fonction :

    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
    CREATE FUNCTION Fn_getTrancheAge
    	(@_age tinyint)
    	RETURNS varchar(7)
    WITH SCHEMABINDING
    AS
    BEGIN
    	RETURN CASE 
    			WHEN @_age BETWEEN 0 AND 10 THEN '0-10'
    			WHEN @_age BETWEEN 11 AND 20 THEN '11-20'
    			WHEN @_age BETWEEN 21 AND 30 THEN '21-30'
    			WHEN @_age BETWEEN 31 AND 40 THEN '31-40'
    			WHEN @_age BETWEEN 41 AND 50 THEN '41-50'
    			WHEN @_age BETWEEN 51 AND 60 THEN '51-60'
    			WHEN @_age BETWEEN 61 AND 70 THEN '61-70'
    			WHEN @_age BETWEEN 71 AND 80 THEN '71-80'
    			WHEN @_age BETWEEN 81 AND 90 THEN '81-90'
    			WHEN @_age BETWEEN 91 AND 100 THEN '91-100'
    			WHEN @_age BETWEEN 101 AND 110 THEN '101-110'
    			WHEN @_age BETWEEN 111 AND 120 THEN '111-120'
    			WHEN @_age BETWEEN 121 AND 130 THEN '121-130'
    		END
    END
    Utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT dbo.Fn_getTrancheAge(25)
    @++

  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
    Elle était un peu brutale :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ALTER FUNCTION Fn_getTrancheAge
    	(@_age tinyint)
    	RETURNS varchar(7)
    WITH SCHEMABINDING
    AS
    BEGIN
    	RETURN CAST((@_age - 10) / 10 * 10 + 10 AS varchar(3)) + '-' + CAST((@_age + 10) / 10 * 10 AS varchar(3))
    END
    Si vous n'avez pas encore créé la fonction qui est dans mon précédent post, remplacer le ALTER par CREATE.

    Notez au passage que vous pouvez aussi utiliser cette "formule" pour spécifier une colonne calculée ou une vue

    @++

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 77
    Par défaut
    Merci infiniment esuket pour votre réponse la plus précise.ça marche nikel

  5. #5
    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
    Avec plaisir !

    Pensez quand même à la vue ou à la colonne calculée

    @++

  6. #6
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2009
    Messages : 138
    Par défaut
    Bonjour,

    y'a la fonction round () qui peut être utilisée aussi.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    round (11, -1) -- renvoie 10
    round (18, -1) -- renvoie 20
    Tu obtiens ainsi soit la borne inférieure, soit celle supérieure (il suffit de faire un test pour savoir).

    En matière de perf, je sais pas laquelle est la mieux par rapport à celle de elsuket...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/03/2008, 17h56
  2. Réponses: 2
    Dernier message: 20/03/2007, 17h00
  3. Réponses: 2
    Dernier message: 05/12/2005, 16h39
  4. Procédures stockées imbriquées SQL Server
    Par Mike69 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/10/2003, 10h31

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