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 :

procedure avec seulement premiere lettre


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 30
    Points
    30
    Par défaut procedure avec seulement premiere lettre
    Bonjour a tous !

    j'ai une table clients
    quand j'ajoute quelques choses dans ma
    table clients avec une insertion traditionnelle du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO clients
    VALUES ('8426','Vaname','Bob','44 rue boulet')
    Pas de probleme...

    dans un livre on me conseille de cree la procedure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Create Proc AjouteClients
    (@numero int, @nom char, @prenom char, @adresse char) as 
    insert into clients (numcli, nom, prenom, adresse)
    values (@numero, @nom, @prenom, @adresse)
    ensuite je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    exec AjouteClients @numero = '444', @nom = 'vanoot', 
    @prenom = 'Bob', @adresse = '45 avenue parvenue'
    et là cela mets seulement les premiers caractere
    de chaque collone :

    4656 v B 4
    12345 v B 1
    comment cela ce fait ?

  2. #2
    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
    Lorsque tu déclares tes paramètres d'entrées, il faut que tu définisses la taille de tes paramètres varchar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE Proc AjouteClients 
    @numero int,
    @nom varchar(50), 
    @prenom varchar(50),
    @adresse varchar(100)
    AS
     INSERT INTO clients (numcli, nom, prenom, adresse) VALUES (@numero, @nom, @prenom, @adresse)
    GO
    En ne définissant pas cette taille par défaut le moteur affect une taille de 1 caractère. Donc l'insertion ne prenait qu'un caractère.

    Tu peux lancer ta procédure stockée de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec AjouteClients '444','vanoot','Bob','45 avenue parvenue'
    Bon courage pour la suite.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 30
    Points
    30
    Par défaut MErci
    Merci !

    cela fonctionne !

    a part pour le nom mais comme j'ai mis un
    declencheur sur le nom je pense qu'il y a
    un probleme de declaration aussi !
    je les regler !

    question supplementaire :
    Quand j'ai cree ma table j'ai declaré les collone en
    char etc... Mais quand tu cree une procedure
    il faut redeclarrer les variable avec le nombre de caractere possible ?
    en fait des que tu ajoute quelque choses il faut declarer cela ?

  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 Réponse
    Lorsqu'on utilise des variables d'entrées chaînes de caractères, il faut définir le nombre de caractères que peut prendre cette variable sinon le moteur mettra la taille à 1 par défaut. C'est donc obligatoire parce que la variable n'a aucune relation directe avec la table qu'elle affecte.

    De plus, il vaut mieux que les variables d'entrées aient la même taille que les champs dans lesquels elles seront insérées.

    Attention la définition de la taille ne s'applique qu'au champ chaîne de caractères (char,nchar,varchar,nvarchar).

    Si tu as d'autres questions n'hésites pas.
    Bon courage pour la suite.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 30
    Points
    30
    Par défaut
    non c'est bon en tout cas je te remerci beaucoup !

    super sympa et tu explique bien lol !

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

Discussions similaires

  1. [XL-2007] Trie colonne avec premiere lettre en tête
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/11/2011, 15h11
  2. Rechercher avec premier lettre d'un nom
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/09/2007, 17h56
  3. Calcul une soustraction avec seulement les 2 premier nombre
    Par tatrimaru dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/07/2007, 17h33
  4. Execution d'une procedure avec TNotifyEvent;
    Par Chupakabra dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2003, 14h50
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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