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 :

Insertion de paramétre de type datetime incorrecte dans 1 procédure stocké...


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Points : 61
    Points
    61
    Par défaut Insertion de paramétre de type datetime incorrecte dans 1 procédure stocké...
    Bonjour tout le monde!!!

    Je suis entrain de créer une procédure stockée d'insertion qui est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE  PROCEDURE ps_i_Item
    @nomTable varchar(50),
    @Item varchar(10),
    @Z_User varchar(30),
    @Z_Created datetime,
    @Z_Modified datetime
    AS
    DECLARE @QUERY varchar(5000)
    SET @QUERY = 'INSERT INTO '+@nomTable+'('+@nomTable+',Z_User,Z_Created,Z_Modified) 
    VALUES('''+@Item+''','''+@Z_User+''','''+@Z_Created+''','''+@Z_Modified+''')'
    EXEC(@QUERY)
    GO
    Malheurement elle ne fonctionne pas. Voici les erreurs que je reçoi dès que je l'exécute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Server: Msg 241, Level 16, State 1, Procedure ps_i_Item, Line 9
    Syntax error converting datetime from character string.
    Je vois bien que le soucis viens des parametre de type datetime, mais je n'arrive pas à le résoudre.

    Merci d'avance de bien vouloir m'aider.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    tu utilises .Net pour l'appel à ta procédure stockée?
    si ca n'est pas le cas mais plutot varchar(30) à la place de datetime et fait une conversion de chaine en datatime.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Points : 61
    Points
    61
    Par défaut
    Salut!

    Oui désolé, je n'ai pas précisé les outils que j'utilisé.
    J'utilise donc comme SGBD SQL server avec Asp en langage c#.

    ET l'erreur que j'ai mi, c'est lors de l'execution de ma procédure avec SQL Query Analyser.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    normalement en .net avec ado.Net ca devrait marcher. mais tu lui fournis quoi comme données à ta requete quand tu la lances dans le query analyser?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Points : 61
    Points
    61
    Par défaut
    Non ça ne fonctionne non plus en ASP.net!
    il me renvois cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. 
    Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. 
     
    Détails de l'exception: 
    System.Data.SqlClient.SqlException: Syntax error converting datetime from character string.
    Et en ce qui concerne les données que je dois fournir sont :
    @nomTable varchar(50),
    @Item varchar(10),
    @Z_User varchar(30),
    @Z_Created datetime,
    @Z_Modified datetime

    c'est à dire tous mes paramètre car ils sont not null dans la base de donnée???

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    ce que je voulais c'etait la chaine commandtext avec les parametres que tu fournis en fait la chaine qui t'a permis d'avoir l'erreur avec le query analyzer. franchement remplace les datatimes par des varchar et fais un convert ca devrait mieux le faire.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Points : 61
    Points
    61
    Par défaut
    Excuse je n'avais pas compris la question

    Je passe en parametre :
    12/12/2000

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    affiche moi toute ta chaine avec tes paramétres maprocedure 'toto', 'tti', '12/12/2000' etc.. c'est ca que je voudrais voir. mais evite les '12/12/2000' parce qu'on ne sait pas si c'est anglais ou francais. tu peux aussi filer le code .Net qui te permet de lancer ta procédure stockée. mais franchement mets tous tes datetime en varchar et converti après.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Points : 61
    Points
    61
    Par défaut
    Bon j'essai de convertir ensuite je te tiens au courant...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 180
    Points : 61
    Points
    61
    Par défaut
    Super ça fonctionne!!!

    Merci beaucoup rattlehead!!!!

    Je pense qu'étant donné que le @QUERY est de type varchar je ne pouvais concaténer des données que de type varchar...

    C'est pourquoi la procédure suivante fonctionne à défaut de la précédente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    CREATE PROCEDURE ps_i_Item
    @nomTable varchar(50),
    @Item varchar(10),
    @Z_User varchar(30),
    @Z_Created varchar(30),
    @Z_Modified varchar(30)
    AS
    DECLARE @QUERY varchar(5000)
    SET @QUERY = 'INSERT INTO '+@nomTable+'('+@nomTable+',Z_User,Z_Created,Z_Modified) 
    VALUES('''+@Item+''','''+@Z_User+''','+@Z_Created+','+@Z_Modified+')'
    EXEC(@QUERY)
    Si je me trompe n'hésité pas à me corriger...

    Cepandant rattlehead me conseillait de convertir et c'est vrai que j'aimerai bien recevoir des parametre de type datetime et ensuite les convertir en varchar avant de les concaténer dans ma chaine @QUERY...

    Alors si vous savez comment convertir en varchar un parametre de type datetime cela me rendrai bien service.

    Merci encore pour votre aide.

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 646
    Points
    1 646
    Par défaut
    mais pourquoi veux les avoir en datetime pour les convertir après en varchar? tu fais une opération supplémentaire inutile.
    sinon en TSQL tu as convert ou cast pour convertir.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/03/2007, 11h46
  2. Réponses: 1
    Dernier message: 06/03/2007, 11h57
  3. type de paramètre dans une procédure stockée
    Par shirya dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/03/2007, 19h08
  4. Passer en paramétre un tableau dans une procédure stockée
    Par killysui dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/04/2006, 11h47
  5. Vérification du type de données dans une procédure stockée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/09/2004, 11h20

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