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

Développement SQL Server Discussion :

Procédure: Passer une chaine de caractère en paramètre.


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut Procédure: Passer une chaine de caractère en paramètre.
    Bonjour,

    Je travail sur SQL Server 2014 et j'ai un petit problème concernant les paramètres d'une procédure.

    Je souhaite tout simplement utiliser une chaine de caractère dans mes conditions where... mais ma procédure me renvoie aucun résultat.
    Voici mon code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE PROCEDURE detail_founisseurs (@four varchar = NULL) AS
    Select...[BlaBlaBla]...
    From...[BlaBla]...
    Where (@four is null or fournisseurs= @four)

    Quand je laisse en NULL il n'y à pas de problème tout s'affiche sans distinction mais quand j'essaye de chercher un fournisseur en particulier aucun résultat s'affiche.

    Quelqu'un sait d’où ça peut venir ? Merci

  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 998
    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 998
    Billets dans le blog
    6
    Par défaut
    Vous avez passé un VARCHAR sans dimension.... En SQL normatif cela n'est pas toléré. Pour SQL Server ce sera un varchar de 1 caractère !!!!

    Dimensionnez correctement vos paramètres et cela marchera !

    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 du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2017
    Messages : 6
    Par défaut ^^"
    Merci c'était tout bête finalement mais j'ai bien galéré haha ^^" j'ai mis varchar(20)

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Vous avez passé un VARCHAR sans dimension.... En SQL normatif cela n'est pas toléré. Pour SQL Server ce sera un varchar de 1 caractère !!!!
    Merci SQLPRo de nous rappeler cette information, qui parait comme ça basique, mais elle est hyper importante.
    Au début, je pensais que tu parlais uniquement du SQL normatif, mais pas du SQL normatif de chez Microsof !
    Alors, j'ai re-vérifié la documentation de SQL Sever et il se trouve que tu as raison et que cela s'applique aussi à SQL Server.
    Je réagis parce que je ne sais pourquoi, j'ai toujours pensé que dès lors que l'on ne précise pas la dimension, c'était par défaut 30. Mais dans les faits, cette valeur de 30 (je ne sais pas si elle est SQL normative ou pas), n'est valable que pour le CAST et le CONVERT. Elle n'est pas valable pour les variables ou paramètres déclarés sans dimension, qui comme tu viens de le rappeler est de 1 (et non pas 30).

    Voilà on croit tout savoir ou presque, et on se fait avoir avec des trucs basiques de chez basiques !

    Merci pour le rappel.

    A+

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    des pièges a con comme ça y'en a plein.... Un autre exemple est le COUNT qui d'après la norme doit renvoyer un INTEGER. Parfaitement respecté par SQL Server d'ailleurs.
    Mais pas par Oracle qui renvoi un NUMBER.

    Ainsi la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT 1 / COUNT(*) FROM ...
    Doit renvoyer 1 ou 0... : 1 si la table ne compte qu'une seule ligne et 0 dans tous les autres cas (rien s'il n'y a pas de ligne...).
    Sous Oracle, cela renvoi un nombre réel !

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

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

Discussions similaires

  1. passer une chaine de caractères dans une fonction
    Par Morgatte dans le forum C++/CLI
    Réponses: 3
    Dernier message: 14/02/2012, 19h05
  2. Envoi d'une chaine de caractéres par paramétre
    Par hadjiphp dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2009, 14h58
  3. [MEX] Passer une chaine de caractères à une fonction mex
    Par onaipadesmickey dans le forum MATLAB
    Réponses: 1
    Dernier message: 27/02/2008, 09h39
  4. passer une chaine de caractère entre client et serveur COM
    Par ali.ensi dans le forum Visual C++
    Réponses: 7
    Dernier message: 28/03/2007, 17h30
  5. Réponses: 6
    Dernier message: 29/11/2005, 16h40

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